2017-06-26 70 views
1

我正嘗試在我的應用程序中創建自己的ngPluginProtocolPipe實現。 爲此,我構建了一個管道TranslateWrapperPipe,它在裏面調用TranslateService並返回數據。Angular:在自定義管道中包裝ng-translate服務

export class TranslateWrapperPipe implements PipeTransform { 
constructor(private translateService : TranslateService){ 
} 

    transform(value: any, args?: any): any { 
    if(value){ 
    console.log(value) 
    return this.translateService.get(value) 
    } 
} 
} 

但我得到一個對象回來。 如果我做這樣的事情this.translateService.get(value).subscribe((res) => console.log(res))我得到的結果,但如何將它返回到模板中的原始調用者?

回答

0

使用自定義管道與異步管道解決了問題。看起來好像每當從管道返回可觀測值時,我們也需要添加異步管道。

+0

AsyncPipe提供不必要的開銷。實際上,管道應該是不純的,並且包含來自AsyncPipe的一些想法。它應該簡單得多,因爲它僅限於一個可觀察的字符串值。 – estus

+0

嗨estus你能指導我更好的方式來解決問題嗎? –

+0

是的,只需在AsyncPipe中完成對observable的訂閱即可。它已經夠簡單了,自定義管道應該更簡單。我無法爲你寫一堂課,但如果你在實施方面遇到特殊問題,可隨時提出一個新問題。 – estus