Я добавил простой канал в свое приложение Ionic, но он работает не так, как ожидалось. Не уверен, в чем может быть проблема (другие мои трубы работают ..). Я пробовал это с функцией NgZone и без нее.
Код трубы:
import { Pipe, PipeTransform, NgZone } from '@angular/core';
import { Http, HttpModule } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/map';
/**
* Generated class for the LinkOgImagePipe pipe.
*
* See https://angular.io/api/core/Pipe for more info on Angular Pipes.
*/
@Pipe({
name: 'linkOgImage',
})
export class LinkOgImagePipe implements PipeTransform {
constructor(public http: Http, private ngZone:NgZone) {
}
transform(value: string) {
var urlEncoded;
urlEncoded = encodeURIComponent(value);
var requestUrl = "https://mywebsitefunction.com?pageurl = " + urlEncoded ;
this.http.get(requestUrl).map(res => res.json()).subscribe(data =>{
let imageurl = data[0]['img'];
console.info(imageurl);
this.ngZone.run(() => {
return imageurl;
})
})
}
}
Следующий код взят из page.ts:
<ion-card *ngFor = "let newsitem of newsItems">
<img src = "{{ newsitem.link | linkOgImage }}"/>
<ion-card-content>
<ion-card-title>
{{ newsitem.title }}
</ion-card-title>
<p>
{{ removeHTMLInfo(newsitem.description ) }}
</p>
</ion-card-content>
</ion-card>
Я также попытался получить значение в виде текста вместо того, чтобы вставлять его в изображение, но это тоже не работает. Console.log из канала показывает правильные значения, но не отображается на интерфейсе.
Надеюсь, вы, ребята, укажете мне верное направление!
Да, HTTP-запрос работает нормально. В журнале консоли отображается правильный URL-адрес изображения, возвращаемый HTTP-запросом. Единственная проблема в том, что когда конвейер возвращает значение веб-интерфейсу, оно не отображается.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


это нечистый канал (канал, который выполняет HTTP-запрос) U должен делать это как
@Pipe({
name: 'fetch',
pure: false
})
Пробовал, но это приводит к зацикливанию, в котором канал приводит к сбою моего браузера.
Он заработал, используя кешированную переменную, как в примере в документации!
Когда вы говорите, что это не работает, что происходит? Выполняется ли HTTP-запрос? Он успешно возвращается?