注:默认已有扎实的vue功底
循环体的根元素
template ng-container
1 2 3 4 5 6 7
| <ng-container *ngIf="lessons">
<div class="lesson" *ngFor="let lesson of lessons">
<div class="lesson-detail">
{{lesson | json}}
</div>
</div>
</ng-container> |
插槽
slot ngTemplateOutlet
1 2 3 4 5 6
| <ng-container *ngTemplateOutlet="aaa; context: {{$implicit: '我是默认值,隐式定义,不需要赋值,对应let-name', diyValue: '我是自定义对象,需要赋值'}}" ></ng-container>
<ng-template #aaa let-name let-diyValue=”diyValue“>
默认值- {{name}}
赋值- {{diyValue}}
</ng-template> |
#aaa叫做模板引用变量
let-name叫做模板输入变量
这里的理解是,
ng-template插入对应的ng-container的引用标记中,
即#aaa插入到对应的*ngTemplateOutlet="aaa",
然后将变量``传入模板内,模板内接受变量进行赋值let-diyValue="xx",`
完了在模板作用域内使用该变量{{diyValue}}`
自定义组件
引用
1 2 3 4 5 6 7 8 9 10
| <ng-container *ngFor="let item of [1,2,3]; let idx=index">
<app-template-test [dTemplate]="tpl">
<ng-template #tpl>
<div>
<p><center>[wp_ad_camp_3]</center></p><p>我进来看看{{item}}</p>
<p>我也进来康康{{idx}}</p>
</div>
</ng-template>
</app-template-test>
</ng-container> |
ts
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| import { Component, OnInit, Input, TemplateRef } from '@angular/core';
@Component({
selector: 'app-template-test',
templateUrl: './template-test.component.html',
styleUrls: ['./template-test.component.css']
})
export class TemplateTestComponent implements OnInit {
@Input() dTemplate: TemplateRef<void>; // 接受外部模板
constructor() { }
ngOnInit(): void {
}
} |
html
1 2 3 4 5 6 7 8 9
| <div>
自己写的组件
blablabla
<ng-template #defaultContent>
我是默认显示的内容
</ng-template>
// 使用外部模板或者使用自定义模板
<ng-template [ngTemplateOutlet]="dTemplate || defaultContent"></ng-template>
</div> |
组件传值
父传子
方法一 在父组件上设置子组件的属性【类似vue的props传参】
父组件绑定信息
1
| <app-child childTitle="可设置子组件标题"></app-child> |
子组件接收消息
1 2
| import { Component, OnInit, Input } from '@angular/core';
@Input childTitle: string; // 类似vue的props接收参数 |
方法二 父组件调用子组件的方法
父组件触发消息 【类似vue的ref.methods的写法,区别是直接在模板调用】
1
| <app-child #child></app-child> <button (click)="child.childPrint()"></button> |
子组件接收消息
1 2 3
| childPrint() {
alert("来自子组件的打印");
} |
子传父
子组件向父组件传递信息
方法一 使用 EventEmitter
子组件使用 EventEmitter 传递消息
【类似vue的this.