代码之家  ›  专栏  ›  技术社区  ›  user68288

需要帮助将变量传递到角度2中的对话框

  •  2
  • user68288  · 技术社区  · 8 年前

    尝试将用户上一页的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.log返回时都是未定义的。任何帮助都将不胜感激。

    1 回复  |  直到 8 年前
        1
  •  2
  •   Sajeetharan    8 年前

    你需要把 console.log 内部订阅

       this.issuerService.onChange.subscribe(urlid => {
               this.urlid = urlid;
               console.log(this.urlid);
       });
    
    推荐文章