gpt4 book ai didi

angular - 如何将表达式作为 Angular2 中的输入传递给组件?

转载 作者:太空狗 更新时间:2023-10-29 17:08:56 27 4
gpt4 key购买 nike

我需要将表达式传递给将在组件模板内进行计算的组件。

例如组件:

@Component({
selector: 'app-my-component',
...
})
export class MyComponent {
@Input items: MyClass;
@Input expression: String;
...
}

使用组件的模板:

<div *ngFor="let item of items">
{{expression}}
</div>

MyComponent 的用法:

<app-my-component [items]="listOfItems" [expression]="'[item.id] item.name'">
</app-my-component>

由于会有多个输入,我想避免使用 TemplateRef。

最佳答案

也许以下选项之一可以帮助您:

1) 使用 ngForTemplate NgFor 指令的输入属性:

组件

@Component({
selector: 'app-my-component',
template: `
<div *ngFor="let item of items template: itemTemplate"></div>`
})
export class MyComponent {
@Input() items: any;
@ContentChild(TemplateRef) itemTemplate: TemplateRef<any>;
}

父级

<app-my-component [items]="listOfItems">
<ng-template let-item>[{{item.id}}] {{item.name}}</ng-template>
</app-my-component>

Plunker

2) 使用 NgTemplateOutlet指令

组件

@Component({
selector: 'app-my-component',
template: `
<div *ngFor="let item of items">
<ng-template [ngTemplateOutlet]="itemTemplate" [ngTemplateOutletContext]="{ $implicit: item }"></ng-template>
</div>`
})
export class MyComponent {
@Input() items: any;
@ContentChild(TemplateRef) itemTemplate: TemplateRef<any>;
}

父级保持不变:

<app-my-component [items]="listOfItems">
<ng-template let-item>[{{item.id}}] {{item.name}}</ng-template>
</app-my-component>

Plunker

<ng-template let-item>...</ng-template> 里面的这条路你可以使用所需的表达式

关于angular - 如何将表达式作为 Angular2 中的输入传递给组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39974126/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com