Как это называется?

#angular

Вопрос:

Я хотел бы знать, как это называется? Это фрагмент кода, который я нашел в приложении.

  <app-counter [counterDatasObservable]="dataMlsService.getProducts('EnCours', 'Location')"></app-counter>
 

Метод GetProducts вызывает API, который создает запрос к базе данных, и этот метод принимает 2 параметра.
Я бы хотел повторить этот метод дважды, чтобы он выглядел примерно так.

 <app-counter [counterDatasObservable]="dataMlsService.getProducts('EnCours', 'Location'), dataMlsService.getProducts('Compromis', 'Vente')"></app-counter>
 

Спасибо

Изменить : счетчик.ts

 export class CounterComponent implements OnInit {

  @Input() counterDatasObservable: Observable<any>;
  data = [];

  constructor() {}

  ngOnInit() {
    this.counterDatasObservable.subscribe( datas => {
      this.data = datas;    
    });
  }
}
 

родительская служба.ts

 readonly ApiUrl = "publication/Mls/";

      constructor(private apiClient: ApiClientService){}
      
      getProducts(status: string, typeTransac: string): Observable <any> {

        let params = new HttpParams();
//A faire : inclure params date
        params = params.append('status', status);
        params = params.append('typeTransac', typeTransac);

        
        if (status !== null amp;amp; typeTransac !== null) {
            return this.apiClient.get(this.ApiUrl, { params: params});
        }else{
            console.log('aucune valeur en params')
        }
    }
 

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

1. Боюсь, это называется кодовым запахом..

2. [counterDatasObservable] используется для ввода данных в компонент app-counter . это декоратор под названием input .dataMlsService.GetProducts («EnCours», «Местоположение») » должен возвращать массив или что-то в этом роде. вы не можете этого сделать [counterDatasObservable]="dataMlsService.getProducts('EnCours', 'Location'), dataMlsService.getProducts('Compromis', 'Vente')" , я думаю, что это наверняка выдаст ошибку.

3. Верно. Это приводит меня к ошибке. Но есть ли какой-нибудь другой способ?

4. можете ли вы отредактировать компонент счетчика приложений ?

5. сообщение отредактировано.

Ответ №1:

Я думаю, что таким образом вы сможете решить свою проблему

  • Счетчик.ts
 export class CounterComponent implements OnInit {
  @Input() counterDatasObservable: Observable<any>;
  @Input() counterDatasObservable2: Observable<any>;
  data = [];

  constructor() {}

  ngOnInit() {
    this.counterDatasObservable.subscribe(datas => {
      this.data = datas;
    });

    this.counterDatasObservable2.subscribe(datas => {
      //your code
    });
  }
}
 
  • дом

<приложение-счетчик [counterDatasObservable]=»dataMlsService.GetProducts(‘EnCours’, ‘Местоположение’)» [counterDatasObservable2]=»dataMlsService.GetProducts(‘Компромисс’, ‘Вента’)»»>