我正面临着Angular的一个奇怪问题。我想将TemplateRef
作为输入传递给我的组件,以便我可以利用它,但Angular在更改或定义时不会更新ref。这就是我正在做的事情:
DummyComponent
TemplateRef
:
import { Component, Input, TemplateRef, OnChanges } from '@angular/core';
@Component({
selector: 'dummy',
template: `<h1>Dummy: {{name}}</h1>`
})
export class DummyComponent implements OnChanges{
@Input()
public templateRef: TemplateRef<any>;
name = 'Angular';
public ngOnChanges(changes: SimpleChanges) {
// Template ref is not updating.
console.log('DummyComponent -->', changes);
}
}
AppComponent
正在使用DummyComponent
:
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
template: `
<h1>Hello {{name}}</h1>
<button (click)="flag=!flag">Toggle</button>
<br>{{flag}}
<ng-container *ngIf="flag">
<ng-template #myTemp></ng-template>
</ng-container>
<pre>
<!-- TemplateRef is not updating -->
<dummy [templateRef]="myTemp"></dummy>
</pre>
`
})
export class AppComponent { name = 'Angular'; flag = false; }
如您所见,我正在为myTemp
组件提供dummy
模板参考。当myTemp
ref被定义时,即当flag = true时;它应该传递给DummyComponent
。但它没有发生。谁能告诉我我错过了什么?这是plunkr可以玩的。