尝试将用户上次访问的页面中的 URL ID 传递到我可以在对话框中引用的服务。
发行者.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);
}
}
具有我想要的 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);
console.log(this.urlid);
console.log(this.urlid);
}
所有 3 个 console.logs 返回为未定义。任何帮助将不胜感激。
最佳答案
您需要将 console.log
放入 subscribe
this.issuerService.onChange.subscribe(urlid => {
this.urlid = urlid;
console.log(this.urlid);
});
关于javascript - 需要帮助在 Angular 2 中将变量传递给对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50657388/