Angular 7 编译错误 NG8002 无法绑定对象,因为它不是已知的 属性
Angular 7 compilation error NG8002 can't bind object since it isn't a known property
我正在 angular 7/8 做一个测试应用程序。我有编译错误 Can't bind 'discounter' since it isn't a known property of 'paDiscountEditor'
我的 html 显示错误的地方很简单...这里我 post 需要的所有文件。
这是app.module.ts文件
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { ProductComponent } from "./component";
import { FormsModule, ReactiveFormsModule } from "@angular/forms";
import { PaAttrDirective } from "./attr.directive";
import { PaModel } from "./twoway.directive";
import { PaStructureDirective } from "./structure.directive";
import { PaIteratorDirective } from "./iterator.directive";
import { ProductTableComponent } from "./productTable.component";
import { ProductFormComponent } from "./productForm.component";
import { PaToggleView } from "./toggleView.component";
import { PaAddTaxPipe } from "./addTax.pipe";
import { PaCategoryFilterPipe } from "./categoryFilter.pipe";
import { LOCALE_ID } from "@angular/core";
import localeFr from '@angular/common/locales/fr';
import { registerLocaleData } from '@angular/common';
import { PaDiscountDisplayComponent } from "./discountDisplay.component";
import { PaDiscountEditorComponent } from "./discountEditor.component";
registerLocaleData(localeFr);
@NgModule({
declarations: [ProductComponent, PaAttrDirective, PaModel, PaStructureDirective, PaIteratorDirective, PaCellColor, PaCellColorSwitcher, ProductTableComponent,
ProductFormComponent, PaToggleView, PaAddTaxPipe, PaCategoryFilterPipe, PaDiscountDisplayComponent, PaDiscountEditorComponent],
imports: [BrowserModule, FormsModule, ReactiveFormsModule],
// providers: [{ provide: LOCALE_ID, useValue: "fr-FR" }],
bootstrap: [ProductComponent]
})
export class AppModule { }
这是discountEditor.component.ts文件
import { Component, Input } from "@angular/core";
import { DiscountService } from "./discount.service";
@Component({
selector: "paDiscountEditor",
template: `<div class="form-group">
<label>Discount</label>
<input [(ngModel)]="discounter.discount"
class="form-control" type="number" />
</div>`
})
export class PaDiscountEditorComponent {
constructor(public discounter: DiscountService) { }
}
这是Discount.Service.ts文件
export class DiscountService {
private discountValue: number = 10;
public get discount(): number {
return this.discountValue;
}
public set discount(newValue: number) {
this.discountValue = newValue || 0;
}
public applyDiscount(price: number) {
return Math.max(price - this.discountValue, 5);
}
}
这是ProductTable.component.ts文件
import { Component, Input } from "@angular/core";
import { Model } from "./repository.model";
import { Product } from "./product.model";
import { DiscountService } from "./discount.service";
@Component({
selector: "paProductTable",
templateUrl: "productTable.component.html"
})
export class ProductTableComponent {
discounter: DiscountService = new DiscountService();
}
这是template.html文件
<div class="row m-2">
<div class="col-8 p-2">
<paProductTable [model]="model"></paProductTable>
</div>
</div>
这是ProductTable.component.html文件
<paDiscountEditor [discounter]="discounter"></paDiscountEditor>
编译时出现的错误
谢谢
您已在 html
中将 discounter
作为输入 属性
<paDiscountEditor [discounter]="discounter"></paDiscountEditor>
但是您的 PaDiscountEditorComponent
组件没有任何输入 属性
您需要在此组件中添加输入 属性
import { Component, Input } from "@angular/core";
import { DiscountService } from "./discount.service";
@Component({
selector: "paDiscountEditor",
template: `<div class="form-group">
<label>Discount</label>
<input [(ngModel)]="discounter.discount"
class="form-control" type="number" />
</div>`
})
export class PaDiscountEditorComponent {
@Input() discounter;
constructor(public discounter: DiscountService) { }
}
您可以在此处了解有关在组件之间共享数据的更多信息:
https://angular.io/guide/inputs-outputs
您在 PaDiscountEditorComponent
打字稿文件
的折扣店中缺少 @Input
属性
我正在 angular 7/8 做一个测试应用程序。我有编译错误 Can't bind 'discounter' since it isn't a known property of 'paDiscountEditor'
我的 html 显示错误的地方很简单...这里我 post 需要的所有文件。
这是app.module.ts文件
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { ProductComponent } from "./component";
import { FormsModule, ReactiveFormsModule } from "@angular/forms";
import { PaAttrDirective } from "./attr.directive";
import { PaModel } from "./twoway.directive";
import { PaStructureDirective } from "./structure.directive";
import { PaIteratorDirective } from "./iterator.directive";
import { ProductTableComponent } from "./productTable.component";
import { ProductFormComponent } from "./productForm.component";
import { PaToggleView } from "./toggleView.component";
import { PaAddTaxPipe } from "./addTax.pipe";
import { PaCategoryFilterPipe } from "./categoryFilter.pipe";
import { LOCALE_ID } from "@angular/core";
import localeFr from '@angular/common/locales/fr';
import { registerLocaleData } from '@angular/common';
import { PaDiscountDisplayComponent } from "./discountDisplay.component";
import { PaDiscountEditorComponent } from "./discountEditor.component";
registerLocaleData(localeFr);
@NgModule({
declarations: [ProductComponent, PaAttrDirective, PaModel, PaStructureDirective, PaIteratorDirective, PaCellColor, PaCellColorSwitcher, ProductTableComponent,
ProductFormComponent, PaToggleView, PaAddTaxPipe, PaCategoryFilterPipe, PaDiscountDisplayComponent, PaDiscountEditorComponent],
imports: [BrowserModule, FormsModule, ReactiveFormsModule],
// providers: [{ provide: LOCALE_ID, useValue: "fr-FR" }],
bootstrap: [ProductComponent]
})
export class AppModule { }
这是discountEditor.component.ts文件
import { Component, Input } from "@angular/core";
import { DiscountService } from "./discount.service";
@Component({
selector: "paDiscountEditor",
template: `<div class="form-group">
<label>Discount</label>
<input [(ngModel)]="discounter.discount"
class="form-control" type="number" />
</div>`
})
export class PaDiscountEditorComponent {
constructor(public discounter: DiscountService) { }
}
这是Discount.Service.ts文件
export class DiscountService {
private discountValue: number = 10;
public get discount(): number {
return this.discountValue;
}
public set discount(newValue: number) {
this.discountValue = newValue || 0;
}
public applyDiscount(price: number) {
return Math.max(price - this.discountValue, 5);
}
}
这是ProductTable.component.ts文件
import { Component, Input } from "@angular/core";
import { Model } from "./repository.model";
import { Product } from "./product.model";
import { DiscountService } from "./discount.service";
@Component({
selector: "paProductTable",
templateUrl: "productTable.component.html"
})
export class ProductTableComponent {
discounter: DiscountService = new DiscountService();
}
这是template.html文件
<div class="row m-2">
<div class="col-8 p-2">
<paProductTable [model]="model"></paProductTable>
</div>
</div>
这是ProductTable.component.html文件
<paDiscountEditor [discounter]="discounter"></paDiscountEditor>
编译时出现的错误
谢谢
您已在 html
中将discounter
作为输入 属性
<paDiscountEditor [discounter]="discounter"></paDiscountEditor>
但是您的 PaDiscountEditorComponent
组件没有任何输入 属性
您需要在此组件中添加输入 属性
import { Component, Input } from "@angular/core";
import { DiscountService } from "./discount.service";
@Component({
selector: "paDiscountEditor",
template: `<div class="form-group">
<label>Discount</label>
<input [(ngModel)]="discounter.discount"
class="form-control" type="number" />
</div>`
})
export class PaDiscountEditorComponent {
@Input() discounter;
constructor(public discounter: DiscountService) { }
}
您可以在此处了解有关在组件之间共享数据的更多信息: https://angular.io/guide/inputs-outputs
您在 PaDiscountEditorComponent
打字稿文件
@Input
属性