Angular 9: использование того же компонента для создания пользователя и редактирования пользователем

#angular #angular2-routing

#angular #angular2-маршрутизация

Вопрос:

Как я могу использовать один компонент как для редактирования, так и для создания?

Форма будет одинаковой в соотношении 1:1.

Мой компонент редактирования подписывается на изменения параметра URL id и соответствующим образом извлекает пользовательский элемент:

 user: User;

constructor(private httpHandler: HttpHandlerService,
          private route: ActivatedRoute) {
}

ngOnInit(): void {
    this.route.params.subscribe(params => {
       this.httpHandler.getUser(userId)
         .subscribe(user => this.user = user);
    });
}
  

Это не должно происходить для создания (нового пользователя). Я хотел бы использовать пустой пользовательский объект и ни на что не подписываться.

Должен ли я просто проверить параметры маршрута? Или есть лучший подход?

Ответ №1:

Решается путем проверки параметра:id, чтобы определить, нахожусь ли я в режиме «создать» или «обновить» для своего компонента.

       user: User;
      idParam: string;
    
      ngOnInit(): void {
        this.route.params.subscribe(params => {
          this.idParam= params[`id`];
          if (!!this.idParam) {
                this.httpHandler.getUser(idParam)
                     .subscribe(user => this.user = user);
            } else {
              this.user = {
                id: '',
                name: ''
              };
          }
        });
      }