【发布时间】:2023-03-21 16:56:01
【问题描述】:
如何在模板中调用服务的方法来创建动态表或其他应该是动态 HTML 的东西?我尝试使用带有{{anyservice.getDynamicTable(param)}} 的双花括号,但这不起作用。正确执行此操作的方法是什么?
【问题讨论】:
-
什么是动态表?
如何在模板中调用服务的方法来创建动态表或其他应该是动态 HTML 的东西?我尝试使用带有{{anyservice.getDynamicTable(param)}} 的双花括号,但这不起作用。正确执行此操作的方法是什么?
【问题讨论】:
您应该准备要在控制器中显示的数据。
这意味着你应该
例如
dynamicTable: any;
ngOnInit() {
this.dynamicTable = this.anyservice.getDynamicTable();
}
或带参数
createDynamicTable(param) {
this.dynamicTable = this.anyservice.getDynamicTable(param);
}
【讨论】:
onInit 中生成它,我可能没有那里的数据,或者如果我加载新数据,我将不得不调用该函数。
组件内部定义的函数可以使用绑定事件在模板中调用。
<button (click)="methodName()">Label</button>
<select (change)="methodName()"></select>
与在 Angular1 中您需要使用预定义的指令(如 ng-click)来绑定这些函数不同,在 Angular2 中您调用的所有原生 JavaScript 事件都使用此语法。
编辑
如果您有迭代或动态生成的数据:
<ul>
<li *ngFor="let item of items; let i = index">
<button (click)="methodName1(i)">Label</button>
<button (click)="methodName2(item)">Label</button>
</li>
</ul>
如您所见,您可以传递数字、字符串、布尔值甚至整个对象。
【讨论】:
ids 或indexes 可以不带花括号传递