У меня проблема с Observables. У меня нет никаких проблем с базовой связи т.д .: SERVICE:Angular2 Наблюдается, подписаться и карта. Связь
getTableRecords(): Observable<RecordModel[]> {
return this.http
.get(this.API + 'records')
.map((tableRecords: Response) => tableRecords.json().data as RecordModel[])
.catch(this.handleError);
}
КОМПОНЕНТ:
getTableRecords() {
this.recordService.getTableRecords()
.subscribe(tableRecords => { this.tableRecords = tableRecords; }, (err) => { this.error = err; console.log(this.error)})
}
Пример сверху работает хорошо, но у меня есть проблема с одним дополнительным шагом. Прежде, чем я буду показывать результат, я wannt отфильтровать одно значение на основе Parametr с связи между двумя службами:
СЕРВИС I:
getTableRecords(): Observable<RecordModel[]> {
return this.http
.get(this.API + 'records')
.map((res: Response) => res.json().data as RecordModel[])
.catch(this.handleError);
}
SERVICE II
getRecordDetail(assetId: string) {
return this.rootService.getTableRecords()
.map((tableRecords:RecordModel[]) => {
console.log("GET RECORDS TO ANOTHER SERVICE: ", tableRecords, assetId);
(tableRecords:RecordModel[]) => tableRecords.filter((tableRecord:RecordModel) => tableRecord.assetId === assetId)
})
}
КОМПОНЕНТ:
tableRecord: RecordModel;
getRecordDetail() {
this.sub = this.activatedRoute.params.subscribe(
params => {
if (params[ 'assetId' ] != undefined) {
let assetId:string = params[ 'assetId' ]
this.complianceDetailService.getRecordDetail(assetId)
.subscribe(result => this.tableRecord = result)
} else console.log("UNDEFINED ASSETID");
}
);
}
В КОМПОНЕНТЕ У меня есть вопрос в .subscribe(result => this.tableRecord = result)
IDE кричит, что void is n от назначаемого типа RecordModel.
Пожалуйста, объясните, что я могу сделать эту последовательность: Первые: Получить данные из одной службы, Два: Манипулирование данных во второй службе, Три: возвращаемых данных для компонента.
Все это я хочу сделать с Observables, потому что та же последовательность, которую я могу сделать с обещаниями.
С наилучшими пожеланиями Uland!
Спасибо за ответ, но, к сожалению, если я сделать это таким образом, в IDE я ERR: [ц] Типа аргумент для параметра типа «Т» не может быть выведено из эксплуатации. Рассмотрим явно аргументы типа. Тип аргумент кандидат 'RecordModel []' не является допустимым аргументом типа, потому что он не является супертипом кандидата 'RecordModel'. Отсутствует свойство 'length' в типе 'RecordModel'. : –
обновил ответ – raj