【发布时间】:2016-07-03 22:22:10
【问题描述】:
我正在尝试创建一个内部具有动态模板字符串的组件,该字符串可以访问模板上的局部变量。我尝试过的每种方法都以“动态模板字符串”结尾,而不是 $compile'd(角度 1 术语,请原谅)。
这是下面组件的代码。在您看到评论的地方,我想在ngFor 中插入一个可以引用item 的模板字符串。
@Component({
selector: 'ion-alpha-scroll',
template: `
<ion-scroll [ngStyle]="calculateScrollHeight()" scrollX="false" scrollY="true">
<ion-list class="ion-alpha-list-outer">
<div *ngFor="let items of sortedItems | mapToIterable;">
<ion-item-divider id="scroll-letter-{{items.key}}">{{items.key}}</ion-item-divider>
<ion-item *ngFor="let item of items.value">
<!-- how can I pass a dynamic template here that can reference item ? -->
</ion-item>
</div>
</ion-list>
</ion-scroll>
<ul class="ion-alpha-sidebar" [ngStyle]="calculateDimensionsForSidebar()">
<li (click)="alphaScrollGoToList(letter)" *ngFor="let letter of alphabet">
<div class="letter">{{letter}}</div>
</li>
</ul>
`,
pipes: [MapToIterable]
})
export class IonAlphaScroll {
@Input() listData: any;
@Input() key: string;
@Input() template: string;
....
}
理想情况下,我希望ion-alpha-scroll 的嵌入内容在ngFor 中引用item。我尝试在组件的必要ngFor 中使用ng-content,但没有运气 -
<ion-alpha-scroll *ngIf="breeds" [listData]="breeds" key="$t">
{{item.$t}}
</ion-alpha-scroll>
我试过的一件事是这样的——
<ion-alpha-scroll *ngIf="breeds" [listData]="breeds" key="$t" [template]="alphaScrollTemplate">
</ion-alpha-scroll>
alphaScrollTemplate 只是一个包含{{item.$t}} 的字符串。然后我尝试在评论提出问题的组件中引用它,但它不起作用 -
...
<ion-item *ngFor="let item of items.value">
{{template}}
<!-- this just outputs {{item.$t}} literally -->
</ion-item>
...
我真的很好奇 Angular 2 是否也能做到这一点。我刚刚找到this question which is very similar to mine。任何帮助或建议将不胜感激,谢谢。
【问题讨论】:
-
@GünterZöchbauer 谢谢。我在这里找到了一种使用这种方法的方法 - blog.lacolaco.net/post/dynamic-component-creation-in-angular-2 完成后我会用解决方案添加我的问题的答案。
标签: angular angular2-components