至少有兩個選項。 Subject and Observable
或者如果此another
組件是父級,則可以使用@Input
。
Subject and Observable
方法:
angular guide強烈推薦閱讀整個頁面。
一些部件
export class SomeComponent {
constructor(private ClassService: ClassService) { }
private changeClass(class) {
this.ClassService.changeClass(class);
}
}
另一組件
export class AnotherComponent implements OnInit, OnDestroy {
constructor(private ClassService: ClassService) { }
private class: string = "";
private subscribtion: Subscribtion;
ngOnInit(): void {
this.Subscribtion = this.ClassService.someClass$.subscribe(
(class) => { this.class = class; }
)
}
ngOnDestroy(): void {
this.Subscribtion.unsubscribe();
}
}
服務取自
@Injectable();
export class ClassService{
constructor() { }
private someClassSource= new Subject<string>();
someClass$= this.someClassSource.asObservable();
changeClass(class) {
this.someClassSource.next(class);
}
}
我answer
@Input
方法:
angular guide
這是非常簡單的,當你點擊按鈕changeClass
方法將改變elClass
將由@Input
裝飾傳遞給another component
的@Input
每一個變化都會導致檢測將會檢測到該值已更改的更改,所以班級將更改爲myClass
。
父組件
parent.component.html
<another-component [elementClass]="elClass"></another-component>
<button (click)="changeClass('myClass')">change class<button>
parent.component.ts
export class ParentComponnet {
private elClass: string = "";
changeClass(class: string) {
elClass = class;
}
}
另一個組件(必須是子組件)
another.component.html
<div [ngClass]="elementClass">
another.component.ts
export class AnotherComponent {
@Input() elementClass: string;
}
還有通過@Output
(發光事件)的孩子家長互動angular guide
什麼「另一個組件」。請提供演示組件相關的代碼(TS + HTML)。 –
[在兩個不同的組件中同時更改Angular 2的值的可能的副本](https://stackoverflow.com/questions/41771511/changing-a-value-in-two-different-components-at-the-相同的時角度-2) –