使用 @Input() 时出现 TypeScript 错误

问题描述 投票:0回答:5

我正在尝试使用 Angular 4 开发一个应用程序。但是我在使用时收到一条错误消息

@Input('inputProducts') products: Product[];

错误是

[tslint] 在“ProductListComponent”类中,指令输入 属性“产品”不应重命名。请考虑 以下使用“@Input() products: string”(无输入重命名)。

该错误没有任何影响,我的应用程序工作正常,但很烦人,无法删除它。代码片段如下:

import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
import { Product } from '../product-row/product.model';
@Component({
  selector: 'app-product-list',
  templateUrl: './product-list.component.html',
  styleUrls: ['./product-list.component.css']
})
export class ProductListComponent implements OnInit {
  @Input('inputProducts') products: Product[];
  @Output() selectedProduct: EventEmitter<Product>;
  constructor() {
    this.selectedProduct = new EventEmitter();
  }
  clickedProduct(p: Product): boolean {
    this.selectedProduct.emit(p);
    return false;
  }
  ngOnInit() {
  }
}

html部分

<app-product-list [inputProducts]="products"></app-product-list>

请指出我正确的方向以消除此错误。

angular typescript angularjs-directive
5个回答
8
投票

@Input() inputProducts: Product[];
应该可以解决你的问题。


7
投票

它是样式指南,

no-input-rename
你应该设置为 false 以避免出现此类 tslint 错误的规则。当您使用 Angular CLI 生成项目时,通常将
no-input-rename
设置为
true
。转到 tslint 文件并使其值等于
false
。应该看起来像:
"no-input-rename": false


1
投票
products: Product[];

@Input('inputProducts')
set productsFromInput(projects: Project[]) {
  this.products = products;
}

1
投票

.eslintrc.json 文件中的 rules 部分添加以下行

"@angular-eslint/no-input-rename": "off"

//就这样

"overrides": [
{
  "rules" : {
    "@angular-eslint/no-input-rename": "off"
  }
}

]


0
投票
  @Input() product!: Product;

应该修复它

© www.soinside.com 2019 - 2024. All rights reserved.