#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(‘Компромисс’, ‘Вента’)»»>