我现在想写一个在模板中申明临时变量的指令,可以像ng-template那样let-name="";但是我试了一下不可用[let-*]来实现,那ng-template中的let-是怎么搞的呢?
求指导
我现在想写一个在模板中申明临时变量的指令,可以像ng-template那样let-name="";但是我试了一下不可用[let-*]来实现,那ng-template中的let-是怎么搞的呢?
求指导
import { Directive, ViewContainerRef, TemplateRef, Input } from '@angular/core';
@Directive({
selector: '[let]'
})
export class ExpAsDirective {
_context: any = {name: 'wei', tt: '1ttvalue '};
private _thenTemplateRef: TemplateRef<any>|null = null;
@Input() public set letContext(val) {
this._context = val;
this._updateView();
}
constructor(private _viewContainer: ViewContainerRef, templateRef: TemplateRef<any>) {
this._thenTemplateRef = templateRef;
}
private _updateView() {
this._viewContainer.clear();
this._viewContainer.createEmbeddedView(this._thenTemplateRef, this._context);
}
}
使用
<div *let="let tt = tt;let age1 = age;context: {tt: name, age: 12}">{{tt}}-------{{age1}}</div>
<input [(ngModel)]="name">
就是比较麻烦
5 回答2.4k 阅读
1 回答2.3k 阅读
1.8k 阅读
1.3k 阅读
1 回答144 阅读
142 阅读
47 阅读
Angular
中ng-template
的let
不是声明临时变量的。let-xxx
是暴露ngTemplateOutletContext
中的$implicit
属性作为模板变量let-xxx="foo"
是暴露ngTemplateOutletContext
中的foo
属性作为模板变量参考资料: