сервис не синглтон внутри модуля MatDialog - PullRequest
0 голосов
/ 05 июля 2018

Когда я открываю всплывающее окно Mat Dialog (угловой материал) и получаю доступ к одноэлементному сервису, по какой-то причине внутри диалогового окна mat сервис кажется новым экземпляром сервиса, а не одноэлементным сервисом, используемым в приложении.

Я знаю, как сделать обходной путь, но я предпочитаю понять, если есть известная проблема с matdialog и, возможно, исправление.

  const dialogRef = this.dialog.open(MyComponent, {
  width: '400px',
  data: {
    myInfo: Info
  },
});

Сервис был добавлен в "App.component.ts" в виде синглтона, подобного этому:

import {Component, OnInit} from '@angular/core';
import {NavigationEnd, Router} from '@angular/router';
import {AuthService} from './shared/services/auth.service';
@Component({  selector: 'app-root',  templateUrl: './app.component.html',  styleUrls: ['./app.component.scss'],  

providers: [AuthService]})    export class AppComponent implements OnInit {}

Спасибо!

1 Ответ

0 голосов
/ 05 июля 2018

Насколько я знаю, проблема в том, что вы объявляете service внутри AppComponent, но material dialogs порождает вне вашего app-root (angular cdk порождается как последний элемент в body), поэтому это не доступно для вашего dialog component. Чтобы это исправить, вы должны объявить провайдера AuthSerivce внутри вашего основного AppModule, тогда он будет виден в вашем диалоговом компоненте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...