tubo de custume com a chamada http em angular valor 6 não retornar

votos
0

Eu fiz um costume tubulação em angular 6 com leva id como parâmetro e devolvê-lo nomear depois de chamar servidor (chamada http)

Meu código tubulação está seguindo

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)

    }
   )
 }

}

e usá-lo dessa maneira

 <td>{{it.createdByUser.id | getName }}</td>
Publicado 19/12/2018 em 14:12
fonte usuário
Em outras línguas...                            


1 respostas

votos
0

Se a função que você está usando para obter o seu valor é assíncrona, você vai precisar usar um AsyncPipe.

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

Agora, você está retornando response.data.namesomente para a função que se inscreve para a resposta. Isso não é o mesmo que devolvê-lo para o real transform()função. Na armação código que Angular executa a função de tubo, não pode obter o resultado do pedido assíncrono - que vai levar tempo para voltar.

Respondeu 19/12/2018 em 14:15
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more