我有一個用戶對象的應用程序,其中存儲了所有用戶信息,並使用userService提供的可觀察對象進行更新。現在我想知道在組件中使用該用戶observable的最佳做法是什麼?角2組件的最佳實踐
我有一個帶有日曆組件(日曆)的頁面(TestPage)。日曆使用用戶對象,因爲它必須知道它具有顯示周視圖或月視圖。
選項1: 第一個選項是創建在TestPage一個可觀察併爲用戶對象與屬性,然後在日曆,它就會與@input
用戶。
TestPage打字稿文件:
export class TestPage {
private user: User;
private userSubscription: Subscription;
constructor(private usersService: UsersService) {
this.log('constructor');
this.userSubscription = this.usersService.$currentUser.subscribe((user: User) => {
this.log('$currentUser: user update', user);
this.user = user;
});
}
ngOnDestroy(): void {
this.log('ngOnDestroy: unsubscribing userSubscription');
this.userSubscription.unsubscribe();
}
}
TestPage HTML:
<flex-calendar [user]="user"></flex-calendar>
日曆:
export class Calendar {
@Input() user: User; // Got the user from the TestPage
}
選項2: 創建OB可以在TestPage和日曆中使用。此選項的優點是日曆與頁面的連接較少。
日曆:
export class Calendar {
private user: User;
private userSubscription: Subscription;
constructor(private usersService: UsersService) {
this.log('constructor');
this.userSubscription = this.usersService.$currentUser.subscribe((user: User) => {
this.log('$currentUser: user update', user);
this.user = user;
});
}
ngOnDestroy(): void {
this.log('ngOnDestroy: unsubscribing userSubscription');
this.userSubscription.unsubscribe();
}
}
有人能解釋一下什麼是最好的辦法是,爲什麼?
請發表評論。我不明白這些嘗試應該看起來像什麼。 –
我現在添加了一些代碼:)我無法添加所有內容,因爲這樣會更難理解。 – mbakker1996
我不明白問題所在。這兩個代碼塊除了類名外,看起來都是一樣的。 –