我有一个子组件,它有一个名为emptyMessage
. 在ngOnInit()
方法中设置了这个变量的值。我在一个父组件中使用同一子组件的多个实例。我发现这emptyMessage
将在该页面上的所有子组件实例中获得相同的值。该值由最后一个初始化的子组件确定。我在一个组件中显示这些子mat-tab-group
组件。所有子组件实例都加载到一个单独的mat-tab
窗口中,并且每个mat-tab
窗口的内容都被急切地加载。
我不确定这种行为是由角度本身引起的mat-tab-group
还是由角度本身引起的。我知道,在 Java 中,每当您将 a 定义为时class variable
,static
该变量及其值都会在由该类创建的所有实例之间共享。如果 Angular 组件的类变量默认是静态的,有没有办法将它们变成实例变量,以便不同的组件实例可以有自己的单独值?
编辑:代码
@Component({
selector: 'app-child',
templateUrl: './child.component.html',
styleUrls: ['./child.component.scss']
})
export class ChildComponent implements OnInit {
emptyMessage:string;
ngOnInit(): void {
this.emptyMessage = new Date().getTime().toString();
}
}
html file
<p>{{emptyMessage}}</p>
父组件 HTML
<mat-tab-group>
<mat-tab label="child component copy 1">
<app-child></app-child>
</mat-tab>
<mat-tab label="child component copy 2">
<app-child></app-child>
</mat-tab>
<mat-tab label="child component copy 3">
<app-child></app-child>
</mat-tab>
</mat-tab-group>
所有 3 个子组件的 emptyMessage 值应该是由最后一个初始化的子组件分配的值,在本例中是child component copy 3
mat-tab 中的实例。