У меня есть дочерний компонент, в котором есть переменная класса с именем emptyMessage
. В методе ngOnInit()
устанавливается значение этой переменной. Я использую несколько экземпляров одного и того же дочернего компонента в одном родительском компоненте. Я обнаружил, что emptyMessage
получит одинаковое значение для всех экземпляров дочерних компонентов на этой странице. Значение определяется последним инициализированным дочерним компонентом. Я показываю эти дочерние компоненты в компоненте mat-tab-group
. Все экземпляры дочерних компонентов загружаются в отдельном mat-tab
окне, а содержимое каждого mat-tab
окна загружается с готовностью.
Я не уверен, вызвано ли это поведение mat-tab-group
или самим angular. Я знаю, что в Java всякий раз, когда вы определяете 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>
Значение emptyMessage для всех трех дочерних компонентов должно быть значением, присвоенным последним дочерним компонентом, который был инициализирован, в данном случае экземпляром в child component copy 3
mat-tab.