Я создаю расширение для Chrome, используя Angular 8.0+. Мне нужно проанализировать URL текущей страницы, используя расширение API Chrome, а затем перезагрузить iFrame. По какой-то причине изменения в подписке не отражаются на шаблоне. Исходный URL-адрес в шаблоне не изменяется.
iframe.component.html
<iframe class="e2e-iframe-untrusted-src" [src]="getTicker | safe" style="height:600px; width:500px" ></iframe>
iframe.component.ts
import { Component, OnInit, Input } from '@angular/core';
import { IFrameService } from './iframe.service';
import { DomSanitizer, SafeUrl } from '@angular/platform-browser';
@Component({
selector: 'app-iframe',
templateUrl: './iframe.component.html',
styleUrls: ['./iframe.component.css']
})
export class IframeComponent implements OnInit {
url: String ;
constructor(public iFrameService: IFrameService, private sanitizer: DomSanitizer) { }
ngOnInit() {
this.iFrameService.setTicker();
this.iFrameService.ticker$.subscribe((newUrlWithTicker) => {
this.url = newUrlWithTicker;
})
}
get getTicker(): String {
return this.url;
}
}
iframe.service.ts
import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
import { SafeUrl, DomSanitizer } from '@angular/platform-browser';
@Injectable()
export class IFrameService {
ticker$: BehaviorSubject<string> = new BehaviorSubject("initialDummyUrl?something=");
setTicker() {
chrome.tabs.getSelected(null, (tab) => {
var url = tab.url;
var ticker = url.split("/")[4];
var urlStr="initialDummyUrl?something="+ticker+"&ticker="+ticker+"";
this.ticker$.next(urlStr);
});
}
}