我有两个独立的模块,包含以下组件 .
-
导航栏模块
-
Navbar组件
-
Shared Auth Popup模块
-
登录组件
我唯一想做的是在Navbar组件或任何其他模块的任何其他组件中单击按钮时使用服务显示登录弹出窗口 .
这是我的Auth Popup共享模块:
import { NgModule, ModuleWithProviders } from '@angular/core';
import { CommonModule } from '@angular/common';
import { AuthPopupTriggerService } from './popup-trigger.service';
import { LoginComponent } from './login/login.component';
import { SignupComponent } from './signup/signup.component';
import {
MatFormFieldModule,
MatProgressSpinnerModule,
MatInputModule,
MatIconModule,
MatProgressBarModule
} from '@angular/material';
import { ReactiveFormsModule } from '@angular/forms';
import { SweetAlert2Module } from '@toverux/ngx-sweetalert2';
@NgModule({
imports: [
CommonModule,
MatFormFieldModule,
MatProgressSpinnerModule,
MatInputModule,
ReactiveFormsModule,
MatIconModule,
MatProgressBarModule,
SweetAlert2Module
],
declarations: [LoginComponent, SignupComponent],
providers: [],
exports: [LoginComponent]
})
export class AuthPopupModule {
static forRoot(): ModuleWithProviders {
return {
ngModule: AuthPopupModule,
providers: [AuthPopupTriggerService]
};
}
}
这是我的popup-trigger.service.ts来共享组件之间的数据 .
import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class AuthPopupTriggerService {
private messageSource = new BehaviorSubject('');
currentMessage = this.messageSource.asObservable();
constructor() {}
openPopup(message: string) {
this.messageSource.next(message);
}
这是我的login.component.ts的内容
ngOnInit() {
this.triggerService.currentMessage.subscribe(
msg => {
console.log('try');
if (msg === 'login') {
}
},
err => console.log(err)
);
}
Behavior subject is not subscribing in login.component.ts file and console.log() is not running. I have also imported the shared module in app.module.ts "AuthPopupModule.forRoot()"
我在哪里错过了什么?