typescript - Angular 6 Använder Två Delade Moduler: Komponent är inte ett känt element:
Jag har två delade moduler 'shared-candidate-login-reg.module.ts' och 'shared.module.ts', jag importerar båda delade modulerna på min startsida. Jag vill använda 'AlertLblComponent' från min 'shared.module.ts' i min 'WidgetLogRegComponent'-komponent (som är en barnkomponent till min startsida och också är en del av min 'shared-candidate-login-reg.module'). Jag använder också lazy loading. Varför kan jag inte få 'alert-lbl'-komponenten i mitt Home Module?
Min alert.module.ts
import { AlertLblComponent } from './../directives';
import { AlertService } from './../services/alert.service';
@NgModule({
declarations: [
AlertLblComponent
],
imports: [
CommonModule,
],
providers: [
AlertService,
],
exports: [
CommonModule,
AlertLblComponent
]
})
export class SharedModule {}
shared-kandidat-inloggning-reg.modul.ts
import { WidgetLogRegComponent } from './../candidates/widget-log-reg/widget-log-reg.component';
@NgModule({
imports: [
CommonModule,
],
declarations: [
WidgetLogRegComponent
],
exports: [
WidgetLogRegComponent
]
})
export class ShareCandidateLoginRegdModule { }
hem.modul.ts
import {ShareCandidateLoginRegdModule} from './../shared/shared-candidate-login-reg.module';
import {SharedModule} from './../shared/shared.module';
@NgModule({
declarations: [
HomeComponent
],
providers: [CandidateService,JobService],
imports: [
CommonModule,
SharedModule,
ShareCandidateLoginRegdModule,
HomeRoutingModule,
],
exports: [HomeComponent],
})
export class HomeModule { }
home.component.html
<div class="col-md-4 banner-form">
<app-widget-log-reg></app-widget-log-reg>
</div>
widget-log-reg.component.html
<alert-lbl></alert-lbl>
<div class="page-tab">
<div id="form-login">
......
</div>
</div>
alert-lbl.component.ts
import { Component, OnInit, OnDestroy } from '@angular/core';
import { Subscription } from 'rxjs';
import { AlertService } from './../services';
@Component({
selector: 'alert-lbl',
templateUrl: 'alert-lbl.component.html'
})
export class AlertLblComponent implements OnInit, OnDestroy {
private subscription: Subscription;
message: any;
constructor(private alertService: AlertService) { }
ngOnInit() {
this.subscription = this.alertService.getMessage().subscribe(message => {
this.message = message;
});
}
ngOnDestroy() {
this.subscription.unsubscribe();
}
}
alert-lbl.component.html
<div *ngIf="message" [ngClass]="{ 'alert': message, 'alert-success': message.type === 'success', 'alert-danger': message.type === 'error' }">{{message.text}}</div>
Jag får detta fel följande:
Uncaught (in promise): Error: Template parse errors:
'alert-lbl' is not a known element:
Svar #1
Du importerade inte SharedModule som exporterar alert-lbl-komponenten inom ShareCandidateLoginRegdModule. Importera det bara som följer
@NgModule({
imports: [
CommonModule,
SharedModule // <-- import shared module here
],
declarations: [
WidgetLogRegComponent
],
exports: [
WidgetLogRegComponent
]
})
export class ShareCandidateLoginRegdModule { }
