обычная труба с http вызовом в угловых 6, не возвращая значение - PullRequest
0 голосов
/ 19 декабря 2018

Я создал пользовательский канал в угловой 6 с параметром принимает идентификатор и возвращает его имя после вызова сервера (http-вызов)

Мой код каналаследуя

import { Pipe, PipeTransform } from '@angular/core';
import { AjaxService } from '@shared/services/ajax.service';
import { activities } from '@shared/constants/activity.constant';
@Pipe({
name: 'getName'
})
export class GetNamePipe implements PipeTransform {
constructor( private serviceManager: AjaxService,){

}
transform(value: any): any {
 if(!value )
return value;
 // return 'a';  // this work perfectly

this.serviceManager.getByParams(activities.getEducatorAndSupervisorName, 
{id:value}).subscribe(
    response => {
      if(response.status==1){
      console.log(response.data)

       return response.data.name;  // i want to return this.

      }
      else
      {

      }
    },
    error => {
        console.log(error)

    }
   )
 }

}

и используя его таким образом

 <td>{{it.createdByUser.id | getName }}</td>

1 Ответ

0 голосов
/ 19 декабря 2018

Если функция, которую вы используете для получения значения, является асинхронной, вам нужно будет использовать AsyncPipe.

https://angular.io/guide/pipes#the-impure-asyncpipe

Прямо сейчас вы возвращаете response.data.name только для функции, которая подписывается на ответ.Это не то же самое, что возвращать его для фактической функции transform().В кодовом фрейме, в котором Angular запускает функцию канала, он не может получить результат асинхронного запроса - для возврата потребуется время.

...