Как проверить свойство ввода с помощью rxjs в Angular?

#angular #typescript

#angular #typescript

Вопрос:

У меня есть свойство ввода внутри компонента:

 @Input() mailbarcode: string;
  

Затем я вызываю службу:

   ngOnInit(): void {
        this.trackMailingObs = this.documentCardRepository.getMailing(this.mailbarcode);
    }
  

Проблема mailbarcode иногда undefined или null , следовательно getMailing() , сбой. Как это исправить?

Да, я могу это сделать:

 if (this.mailbarcode) this.trackMailingObs = this.documentCardRepository.getMailing(this.mailbarcode);
  

Комментарии:

1. Итак, если вы уже нашли ответ самостоятельно, в чем собственно вопрос?

2. Как это сделать с помощью rxjs, я обновил свой вопрос

Ответ №1:

Правильным подходом было бы использовать onChanges . Из документов:

Вызывается перед ngOnInit() и всякий раз, когда изменяется одно или несколько входных свойств, связанных с данными.


Чтобы проверить, присутствует ли входное значение, прежде чем продолжить, внесите следующее изменение:

 @Input() mailbarcode: string;

ngOnChanges(changes: SimpleChanges) {
   if (changes.mailbarcode.currentValue) {
     this.trackMailingObs = this.documentCardRepository.getMailing(this.mailbarcode);   
   }
}
  

Комментарии:

1. Почему нет в ngInit?

2. Как обрабатывать изменения.почтовый штрих-код? Просто проверьте if (changes.mailbarcode) службу вызовов?

3. Правильно ли это? ngOnChanges(changes: SimpleChanges) { if (changes.mailbarcode) this.trackMailingObs = this.documentCardRepository.getMailing(this.mailbarcode); } ?

Ответ №2:

если вы уверены, что для ввода необходимо нажать в компоненте, который вы можете добавить *ngIf к родительскому, а затем к повторному, только если присутствует