Угловой 5 - какая польза от наличия компонентных переменных типа Observable? - PullRequest
0 голосов
/ 27 августа 2018

Я новичок в Angular 6 и читал о процессе http по ссылке ниже:

https://angular.io/tutorial/toh-pt6#create-herosearchcomponent

Я заметил, что в компоненте тип массива героев равен Observable.

Я не уверен, должно ли это всегда иметь место внутри компонентов или нет.

В моем собственном коде я смог привязать данные к ненаблюдаемой:

export class UserInfoComponent implements OnInit {

    data: object;

    constructor(private userInfoService: UserInfoService) {}

    ngOnInit() {

        this.userInfoService
            .getEmployeeInfo()
            .subscribe((response) => {
              this.data = response;
            });
    }
}

Я не уверен, какова лучшая практика или каковы плюсы и минусы каждого метода.

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

Наблюдаемый как переменная класса не является обязательным. Observable основан на концепции использования потоков, когда подписчики подписываются на все, что испускается этим потоком.

Принимая во внимание, что в этом случае HTTP-ответ здесь по умолчанию является наблюдаемым, на который вы подписываетесь и в дальнейшем используете все, что испускается этим потоком ответов.

0 голосов
/ 27 августа 2018

В этом случае вы можете иметь свою переменную Observable - у вас есть цепочка операторов RxJS, и в вашем коде вы хотите подписаться на поток цепочки много раз. Поэтому, чтобы не объединять эти операторы каждый раз, вы можете удерживать их в свойстве и добавлять к нему только один .susbcribe.

this.heroes$ = this.searchTerms.pipe(
  // wait 300ms after each keystroke before considering the term
  debounceTime(300),

  // ignore new term if same as previous term
  distinctUntilChanged(),

  // switch to new search observable each time the term changes
  switchMap((term: string) => this.heroService.searchHeroes(term)),
);

inOneMethod() {
   this.heroes$.subscribe(data => this.first = data);
}

inAnotherMethod() {
   this.heroes.subscribe(data => this.second = data);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...