在这里,我们将给大家分享关于angular6:我希望我的继承组件具有父级的一些属性的知识,让您更了解angular组件继承的本质,同时也会涉及到如何更有效地.NetCore+Angular6学习第二部
在这里,我们将给大家分享关于angular6:我希望我的继承组件具有父级的一些属性的知识,让您更了解angular 组件继承的本质,同时也会涉及到如何更有效地.Net Core+Angular6 学习 第二部分 (创建 Angular6 项目)、android – 我希望我的RecyclerView不回收一些物品、Angular 1与 Angular 2之间的一些差别、angular – 从父级更新子组件的内容。
本文目录一览:- angular6:我希望我的继承组件具有父级的一些属性(angular 组件继承)
- .Net Core+Angular6 学习 第二部分 (创建 Angular6 项目)
- android – 我希望我的RecyclerView不回收一些物品
- Angular 1与 Angular 2之间的一些差别
- angular – 从父级更新子组件
angular6:我希望我的继承组件具有父级的一些属性(angular 组件继承)
由于这些组件有很多共同点,我引入了一个TableCellMasterComponent,它由所有其他类型的表格单元扩展.
我的所有组件都具有相同的主机属性:
@Component({ selector: 'td[app-text-col]',templateUrl: './text-col.component.html',styleUrls: ['./text-col.component.css'],host: { "[hidden]": "col.deactivated" },changeDetection: ChangeDetectionStrategy.OnPush }) export class TextColComponent extends TableCellMasterComponent{ }
有可能以某种方式将其移动到TableCellMasterComponent吗?
我也很想给他们所有人一个上下文菜单.但正如我所看到的,无法在Master中添加HTML.真的吗?
我可以将changeDetection移动到Master吗?
有一个主机属性的解决方案,您可以使用@HostBinding,这将继承.例如你的绑定你可以这样做:
@HostBinding('hidden') get hidden(): boolean { return col.deactivated; }
.Net Core+Angular6 学习 第二部分 (创建 Angular6 项目)
. 创建 angular6
前提:需要安装 nodejs 以及 angular 的脚手架,Angular 官网要求 Angular6.0 必须在 node 8.x
和 npm 5.x
以上的版本才能正常使用.
我的版本是 v10.10 (NodeJS) v6.4.1 (npm)
安装了 angular/cli 才能用 ng 命令 最好安装成 global.
1.1 现在我们打开 vc code, 直接选择上一篇创建的.net core 项目路径,如下
我们在 Terminal 中执行 ng 命令 (这是创建 angular 项目的命令), 现在我们去创建 angular 项目,执行 ng new ClientApp 的命令,这里要看你的运气及网速,反正要等很久很久.
看到如下所示,就表示创建完成.
ok, 我们进入到 ClientApp 文件夹中执行 npm start.
这样就表示编译成功,然后我们在浏览器访问 http://localhost:4200/ , 看到如下就表示我们创建完成,可以访问..
接下来,我们需要做的是跟.net core web api 进行集成.
android – 我希望我的RecyclerView不回收一些物品
我正在使用带有异构视图的RecyclerView,as seen in this tutorial.
我在RecyclerView里面有一些物品也是RecyclerViews.难以想象?假设我想要复制Play商店的布局:一个具有垂直线性布局的大型RecyclerView,并由许多元素填充:单个应用程序和应用程序轮播.
如果要添加的项目是单个应用程序的布局,则将使用ID 1,我将添加单个项目的布局.
另外,如果我需要添加一个Carousel,那么我将在主RecyclerView中添加一个元素:另一个带有自己的适配器的RecyclerView.
这非常有效.滚动主RecyclerView时除外.为什么?因为某些视图在不再可见时被销毁,然后在onBindViewHolder()方法中重新创建.为什么在这?因为主要RecyclerView的适配器正在传递位置X,然后调用OnBindViewHolder().然后,后者使用自己的适配器创建一个新的RecyclerView并将其分配给它.我想保留这些观点只是因为它们每次重新充气都很重要.
这可能吗?如果是的话,你能告诉我怎么样吗?
解决方法:
用这个:
recyclerView.getRecycledViewPool().setMaxRecycledViews(TYPE_CAROUSEL, 0);
这不会回收viewType TYPE_CAROUSEL的任何视图,但如果此类型的项目数非常高,那么它将显着降低您的性能,甚至可能导致OOME
编辑
在阅读MML13的答案后,我认为它可能适合您.当您在外部RecyclerView中重新绑定该视图时,您担心旋转木马的项目会被重新充气.如果所有这些轮播都是相同的类型,即它们都使用相同的适配器,您可以将适配器保持在RecyclerView的ViewHolder外部,只需交换数据并在重新绑定时调用此适配器上的notifyDataSetChanged()或notifyItemRangeChanged(…) .这将回收所有轮播视图和这些轮播内的所有视图.
Angular 1与 Angular 2之间的一些差别
现在在用ng1.5.8做一个项目,ng的优点和特性我就不用多说了,ng1在陆续更新到1.5/1.6后就没再推出新版本了,ng2已经面世测试很久了,如同很多系统和框架一样,每个大的版本更新都会有新特性加入进来,虽然还没有用ng2做过企业级项目,平时也了解了很多ng2的改进的地方,下面就来梳理一下ng1和ng2之间一些差异;
- Angular2不是从Angular1升级过来的,Angular2是重写的,所以他们之间的差别比较大,不是你用过1就能直接上手2的,计划可以认为是一个新的框架;
- Angular2使用了javascript的超集‘Typescript’,所以angular1和angular2从设定之初就是不一样的;
- Angular1.x在设计之初主要是针对pc端的,对移动端支持较少(当然也有其他一些衍生框架如ionic),而Angular2是设计包含移动端的;
- Angular 1的核心概念是$scope,但是angular2中没有$scope,angular2使用zone.js来记录监测变化;
- Angular 1 中的控制器在angular2中不再使用,也可以说控制器在angular2中被‘Component’组件所替代:
////Angular 1.x using Controller and $scope......... var myApp = angular .module("myModule",[]) .controller("productController",function($scope) { var prods = { name: "Prod1",quantity: 1 }; $scope.products = prods; }); ///Angular 2 Components using TypeScript........ import { Component } from ‘angular2/core’; @Component({ selector: ‘prodsdata’,template: ` <h3>{{techncalDiary}}</h3> ` }) export class ProductComponent { prods = { name: ‘Prod1’,quantity: 1 }; }
- Angular 2中,指令的结构、用法作了一些调整,比如1中的ng-repeat被*ngFor替代
///Angular 1.x structural directives:........ <ul> <li ng-repeat="item in items"> {{item.name}} </li> </ul> ///Angular 2 structural directives:............. <ul> <li *ngFor="#item of items"> {{item.name}} </li> </ul>
- Angular 2中,自带原始指令在使用的时候要加上哈希(#)前缀
<div *ngFor="#technicalDiary of technicalDiries">
- 双向数据绑定: [(ngModel)]的写法替换了ng-model
///Angular 1.x,two-way data binding using 'ng-model'.......... <input ng-model="technology.name"></input> /////In Angular 2,two-way data binding using '[(ngModel)]'.......... <input [(ngModel)]="http://technology.name"></input>
- Angular 2主要的性能优化改进是使用了分层依赖注入系统。 Angular 2实现了基于单向树的变化检测,这再次提高了性能;这些优化改进是的angular2的速度比angular1的速度提高很多;
- Angular 2的大小是20kb左右,相对于angular1体积减少很多,在移动端的应用中,流量方便更占优势;
- 支持影子 DOM;
- 支持 Android 和 iOS 的原生移动渲染;
- 支持服务端渲染
总结:
很多人觉得从angular1转向angular2的时候学习曲线陡峭,所以在进军angular2的时候还是先做点预习功课比较好,也是因为改动较大,对angular2的设计思想、原生组件写法和工作原理有一定的了解,学习使用的过程中也更好跨阶。
尽管angular2还在应用测试阶段,但是新版本相对于angular1有了长足的优化改进,相信它会越来越多的被应用到各个应用开发中,并且angular2只会load应用所需的组件(components),这也是个很好的改进,一些统计网站上的数据显示angular的速度比angular1快五倍,不得不说这次angular2的改版升级是非常给力的;本篇列举了一些本人针对angular2新特性的理解,很多point没有写出来(有些还不很了解熟悉),开发正式项目后或者了解更多新特性后再慢慢填补更新;
angular – 从父级更新子组件
onSubmit({ value }: { value: Search }) { this.sharedData.searchStr = value.Search; let urlSegments = this.router.url.split('/'); let lang = urlSegments[1]; let url = lang + '/search'; this.router.navigateByUrl(url); this.searchval.reset(); }
我有共享服务,有界面as suggested here,它的工作原理.
import { Injectable,Inject } from '@angular/core'; export interface ISharedModel { searchStr: string; } @Injectable() export class SearchService { sharedComponent: ISharedModel = { searchStr: '' }; constructor() { } }
在子组件我有ngOnInit
ngOnInit() { this.sharedData = this.sharedResource.sharedComponent; this.searchval = new FormGroup({ Search: new FormControl(this.sharedData.searchStr) }); }
它有html页面
<form (ngSubmit)="onSubmit(searchval)" [formGroup]="searchval" > <input type="text" placeholder="enter search string" formControlName="Search"> <button>search</button> </form>
因此,在重定向应用程序上填充此文本框.但是当它已经在`mydomain.com/en/search’并且我在父组件中输入搜索字符串时,它不会更新我的子组件.
我能做什么?
解决方法
在您的ChildComponent中声明String主题:
public static yourString: Subject<String> = new Subject<string>();
在您的ChildComponent构造函数中:
YourChildComponent.yourString.subscribe(res => { this.searchval.patchValue({Search: res}) });
在你的父亲中,例如一个keyup方法:
updateValue(value) { YourChildComponent.yourString.next(yourUpdated value here) }
关于angular6:我希望我的继承组件具有父级的一些属性和angular 组件继承的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于.Net Core+Angular6 学习 第二部分 (创建 Angular6 项目)、android – 我希望我的RecyclerView不回收一些物品、Angular 1与 Angular 2之间的一些差别、angular – 从父级更新子组件的相关知识,请在本站寻找。
本文标签: