【发布时间】:2018-06-03 09:20:34
【问题描述】:
将用户上一页的 URL id 传递给我可以在对话框中引用的服务。
issuer.service.ts
import { Injectable, EventEmitter } from '@angular/core';
import { Observable, of } from 'rxjs';
import { BehaviorSubject } from 'rxjs';
@Injectable()
export class IssuerService {
private urlidSource = new BehaviorSubject<string>('');
currentUrlid = this.urlidSource.asObservable();
public onChange: EventEmitter<string> = new EventEmitter<string>();
constructor () {
}
changeUrlid(urlid: string) {
this.currentUrlid = of(urlid);
this.onChange.emit(urlid);
}
getUrlid(currentUrlid: string) {
return this.currentUrlid;
}
}
具有我想要的 URL id 的页面 (dashboard.component.ts)
import { IssuerService } from './../../issuer.service';
import { ActivatedRoute } from '@angular/router';
import { Router } from '@angular/router';
urlid: string;
constructor(
private route: ActivatedRoute,
private router: Router,
private issuerService: IssuerService,
public dialog: MatDialog
) {}
newUrlid() {
this.issuerService.changeUrlid(this.route.snapshot.paramMap.get('id'));
console.log(this.urlid);
}
ngOnInit() {
// Get URL ID
this.issuerService.onChange.subscribe(urlid => this.urlid = urlid);
this.newUrlid();
}
组件我要读取的值:
import { ActivatedRoute } from '@angular/router';
import { Router } from '@angular/router';
import { IssuerService } from './../../issuer.service';
urlid: string;
constructor(
private route: ActivatedRoute,
private router: Router,
private issuerService: IssuerService,
public dialog: MatDialog
) {}
ngOnInit() {
this.issuerService.onChange.subscribe(urlid => {
this.urlid = urlid;
console.log(this.urlid);
});
}
所以目前当我访问我的仪表板页面时,它会显示正确的值 2。我的目标是,当用户访问任何页面时,我可以读取此值 2。如何访问此值?上面的代码有效,我的 Header 显示 2 但仅在仪表板页面上时才显示。无论用户在哪个页面上,我都需要它显示 2。
【问题讨论】:
-
为什么你在这里传递 getUrlid() id?您可以使用相同的方法
-
如果我要从不同的组件 (home.component.ts) 访问此服务,我将如何显示“2”(urlid 中包含的值)。
标签: javascript html angular