Нужна помощь в передаче переменной в диалог в Angular 2 - PullRequest
0 голосов
/ 02 июня 2018

Попытка передать идентификатор URL с последней страницы, на которой был пользователь, в службу, на которую я могу ссылаться в диалоговом окне.

isser.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-адресом (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 возвращаются как неопределенные.Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 02 июня 2018

Вам необходимо разместить console.log внутри подписки

   this.issuerService.onChange.subscribe(urlid => {
           this.urlid = urlid;
           console.log(this.urlid);
   });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...