Ich habe eine Anwendung mit einem Benutzerobjekt, in dem alle Benutzerinformationen gespeichert sind und mit einer Observable aktualisiert werden, die von userService angegeben wird. Nun frage ich mich, was ist die beste Praxis für die Verwendung dieses Benutzers mit Komponenten beobachtbar?Best Practice für winkelförmige 2-Komponenten
Ich habe eine Seite (TestPage) mit einer Kalenderkomponente (Kalender). Der Kalender verwendet das Benutzerobjekt, weil es wissen muss, dass es die Wochenansicht oder die Monatsansicht anzeigt.
Option 1: Die erste Option ist eine beobachtbare in der Testseite zu erstellen und gibt das Benutzer-Objekt mit einer Eigenschaft und dann im Kalender, wird es den Nutzer @input
.
Testseite Typoskript-Datei:
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();
}
}
Testseite html:
<flex-calendar [user]="user"></flex-calendar>
Kalender:
export class Calendar {
@Input() user: User; // Got the user from the TestPage
}
Option 2: ein OB erstellen Servable in der TestPage und im Kalender. Diese Option hat den Vorteil, dass der Kalender weniger Verbindung mit der Seite hat.
Kalender:
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();
}
}
Kann jemand erklären, was die beste Option wäre, und warum?
Bitte den Code eingeben. Ich verstehe nicht, wie die Versuche genau aussehen sollen. –
Ich habe jetzt ein paar Code hinzugefügt :) Ich konnte nicht alles hinzufügen, denn dann wäre es schwerer zu verstehen. – mbakker1996
Ich verstehe nicht, was das Problem ist. Die zwei Codeblöcke sehen bis auf den Klassennamen gleich aus. –