typescript - uvoz komponente u više modula u Angular 4
Imam SharedModule
import { NgModule } from '@angular/core';
import { ControlMessagesComponent } from './control-messages.component';
@NgModule({
imports: [
],
declarations: [
ControlMessagesComponent
],
exports: [
ControlMessagesComponent,
]
})
export class SharedModule {}
Zatim sam uvezao u 2 različita modula:
import { SharedModule } from './../shared/shared.module';
@NgModule({
imports: [
SharedModule
],
declarations: [
],
providers: [
]
})
export class OnboardModule {}
import { SharedModule } from '../shared/shared.module';
@NgModule({
imports: [
SharedModule
],
declarations: [
],
providers: [
]
})
export class AModule {}
Evo ControlMessagesComponent
import { Component, Input } from '@angular/core';
import { FormGroup, FormControl } from '@angular/forms';
import { ValidationService } from './../validators/validator';
@Component({
selector: 'control-messages',
template: `<div *ngIf="errorMessage !== null">{{errorMessage}}</div>`
})
export class ControlMessagesComponent {
@Input() control: FormControl;
constructor() {}
get errorMessage() {
for (const propertyName in this.control.errors) {
if (this.control.errors.hasOwnProperty(propertyName) && this.control.touched) {
return ValidationService.getValidatorErrorMessage(propertyName, this.control.errors[propertyName]);
}
}
return null;
}
}
Kad to koristim: <control-messages [control]="form.controls.assetName"></control-messages>
Dobivam sljedeću pogrešku:
Ne može se vezati za 'ngIf' jer nije poznata svojstvo 'div'-a. ("*ngIf=\"errorMessage !== null\"">{{errorMessage}}") : ng:///SharedModule/ControlMessagesComponent.html@0:5 Vezivanje svojstva ngIf nije korišteno ni u jednoj direktivi na ugrađenom predlošku. Provjerite je li ime svojstva ispravno napisano i jesu li sve direktive navedene u "@NgModule.declarations". ("[ERROR ->]{{errorMessage}}") : ng:///SharedModule/ControlMessagesComponent.html@0:0
Ponestaje mi opcija, može li mi netko molim vas reći što radim pogrešno ovdje?
Odgovor #1
Dodajte CommonModule u svoj SharedModule. NgIf i NgForOf također su direktive koje se nalaze u CommonModule. Vaš komponenta koja je zapravo u SharedModule koristi NgIf, pa ga morate uvesti u svoj modul.
Opis
Modul koji uključuje sve osnovne Angular direktive poput
NgIf,NgForOf,
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { ControlMessagesComponent } from './control-messages.component';
@NgModule({
imports: [
CommonModule
],
declarations: [
ControlMessagesComponent
],
exports: [
ControlMessagesComponent,
]
})
export class SharedModule {}
