【发布时间】:2017-12-09 23:13:38
【问题描述】:
在 Angular 中使用 ElementRef、TemplateRef、ViewRef 和 ViewContainerRef 进行实验。我创建了一个 HTML 模板,我想从那里创建一个视图并将该视图传递给 ViewContainerRef 但它不起作用
模板代码
template: `
<ng-container #vc></ng-container>
<ng-template #mytmpl>
<div>Name: <input type="text" name="name" /> </div>
<div>Gender:
<select name="gender" >
<option>Male(1)</option>
<option>Female(2)</option>
</select>
</div>
<div>About you: <textarea ></textarea></div>
<div>Married: <input type="checkbox" /></div>
<div>Children:
<ng-container *ngFor = "let option of this.selectOptions">
<input type="radio" [id]="option" name="children" [value]=option [(ngModel)]="this.children"/> {{option}}
</ng-container>
</div>
<p>Some para</p>
<p>Para with span <span>Inside span</span></p>
</ng-template>
`
在课堂上,我访问模板并查看容器
@ViewChild('vc',{read:ViewContainerRef}) v:ViewContainerRef;
@ViewChildren("mytmpl") myTemplateList:TemplateRef<any>;
我使用下面的代码来创建视图
ngAfterViewInit(){
let elementRef = this.myTemplateList.elementRef
let view = this.myTemplateList.createEmbeddedView(null)
this.v.insert(view)
console.log(elementRef);
}
问题
1) elementRef 未定义!- 我想在控制台上打印模板内的所有元素。但是 elementRef 是未定义的!
2) 我收到 createEmbeddedView 不是函数的错误。
【问题讨论】:
标签: angular