【发布时间】:2017-07-27 12:49:44
【问题描述】:
我目前在更新 DOM 中的值时遇到问题。
为了尽可能快速和简单地解释它,我目前有两个组件(A 和 B)。 B 继承自 A,使用 A 的视图作为模板,但也将其模板注入 A(ng-content),因此 B 的视图如下:
<A>
<template>
<div *ngFor="let item of items" (click)="selected($event, item)">
<span>{{item.name}}<span>
</div>
</template>
</A>
而A的观点是这样的:
<ng-content select="template"></ng-content>
<div *ngIf="searching">Hey I'm looking for answer</div>
<div *ngIf="!searching">I already have my answer</div>
组件 B 只有一个私有变量,即项目数组,而 A 的组件有一个由 B 调用的特定方法,即:
private searching: boolean = true;
selected(event, value: any): void {
event.stopPropagation();
this.searching = false; // This.searching is updated in component but not in DOM
this.selectedItem = value; // BUT this.selectedItem is updated in component AND in DOM !!
}
更改 this.selectedItem 有效,但 this.searching 不会因此仅显示“是”,因为搜索始终为 TRUE。
这里是plunkr。
有人可以启发我吗?谢谢。
【问题讨论】:
-
你为什么使用 event.stopPropagation(); ?
-
能贴出完整的html和组件代码吗?
-
这里是 plunkr:plnkr.co/edit/DP7K5Q63kEqXmQbRA98I?p=preview
-
不要明白你的逻辑。你扩展了当前类
app,现在你有两个组件。要在组件之间发送数据,您应该检查此link -
好吧,我的组件名称不太相关,但是...关键是:我想创建一个父组件和一个子组件,它们将在特定时刻使用(例如:组件汽车和组件卡车。汽车就像卡车的指称,尽管两者之间在功能上有相似之处,但汽车与卡车不同)。我真的不想在组件之间发送数据,而是扩展父组件以仅删除其中的几个方法。
标签: javascript angular angular-ng-if