У меня есть цикл для компонента, который представляет список графических карт в моем реальном приложении.
Я скопировал этот компонент (и зациклил его) как исходный
Привет Компонент
export class HelloComponent {
message:string;
printedMessage:string
@Input() elm:string;
constructor(private data: DataService, private router : Router) { }
ngOnInit() {
this.message = this.data.messageSource.value;
this.data.messageSource.subscribe(message => this.message = message)
}
updateService(){
this.data.changeMessage(this.message);
this.printedMessage=this.data.messageSource.value
}
navigateToSibling(){
this.router.navigate(['/sibling']);
}
}
app component
<div *ngFor="let elm of [1,2,3,4]">
<hello [elm]= "elm"></hello>
</div>
<h1>Copy </h1>
<div *ngFor="let elm of [1,2,3,4]">
<hello [elm]= "elm"></hello>
</div>
Компонент DataService
export class DataService {
messageSource = new BehaviorSubject<string>("default message");
constructor() { }
changeMessage(message: string) {
this.messageSource.next(message)
}
}
Ожидаемое поведение
Что бы я изменил, например, при изменении входного значения компонента 1, изменяется только значение на входе скопированного компонента 1.
Фактическое поведение
На самом деле, когда я изменяю значение внутри входа, все остальные входы меняются.
Вот пример stackblitz