【发布时间】:2020-01-02 22:22:02
【问题描述】:
到处都说您可以通过@input 或通过服务将数据从父级传递给子级。我们有一个始终使用服务的策略,但在这种特殊情况下,我只知道如何使用 @Input 来实现它。这段代码完全符合我的意图:
父级 - component.html
<ul>
<li *ngFor="let item of items">
<app-item [item]="item"></app-item>
</li>
</ul>
子(应用程序项)-component.ts
@Input() item: Item = {price: 0; size: 0; color: 'none'};
如何更改子项,以便数据将来自服务?我知道如何在“onClick”中执行此操作,但不知道在父级上不涉及用户操作时如何执行此操作,只是显示列表(出于其他原因,父级和子级必须是单独的组件)。
我能想象这会起作用的唯一方法(但这是一个糟糕的想法),如果在父级的每次迭代中,我会做一些类似 subject.next(item) 的事情。 任何想法都会非常受欢迎,我完全不知道我应该做什么。
【问题讨论】:
-
subject.next(item)你就是这样做的。 -
孩子中是否存在“onClick”?
-
但是我把这个放在哪里呢?抱歉,我知道这一定是个愚蠢的问题,但我对 Angular 很陌生。
-
不,'onClick' 不存在,也许它会在应用程序增长时出现,但现在不存在。
-
我有种感觉,你可能误解了你的主管的意图或你有什么。你做了很多完美的实现。输入在这个星座中效果最好,因为虽然您可以使用 *ngFor 渲染组件,但您无法知道哪个组件获取哪组数据。如果他们禁止使用 @Input 指令,他们基本上应该放弃使用 Angular 进行开发
标签: angular angular-services angular-components