У меня есть приложение с объектом пользователя, где хранится вся информация пользователя и обновляется с помощью наблюдаемого, который предоставляется из пользовательского сервиса. Теперь мне интересно, что лучше всего использовать для использования этого пользователя с компонентами?Лучшая практика для углового компонента 2
У меня есть страница (TestPage) с компонентом календаря (календарь). В календаре используется пользовательский объект, потому что он должен знать, что он отображает представление недели или представление месяца.
Вариант 1: Первый вариант, чтобы создать одну наблюдаемую в тестовую страницу и дает пользовательский объект со свойством, а затем в календаре, он получает пользователь с @input
.
тестовой страница файл машинопись:
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();
}
}
тестовой страница HTML:
<flex-calendar [user]="user"></flex-calendar>
Календарь:
export class Calendar {
@Input() user: User; // Got the user from the TestPage
}
Вариант 2: Создание Observ в 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
Я не понимаю, в чем проблема. Два блока кода выглядят одинаково, кроме имени класса. –