ngを使用してアプリケーションをビルドするとき、productCodeパラメータを取得してstockTransactionItemsのテーブルを表示するstockTransactionsビューにルーティングしようとしています。 -cliエラーは発生しませんが、Chromeでアプリにナビゲートすると、デベロッパーコンソールで以下のエラーメッセージが表示されるだけです...在庫取引アイテムを使用できないか、見つけられないようですセレクタ/コンポーネント...私はapp.moduleにStockTransactionItemComponentをインポートしましたが、過去には何の問題もなく同様のことをしました...何が間違っているのでしょうか?angular2:パラメータを使用してルーティングするときに別のコンポーネントのテンプレートにコンポーネントテンプレートを表示する問題
私のエラー(コードがエラーを下回っている):
zone.js:388Unhandled Promise rejection: Template parse errors: Can't bind to 'stock-transaction-item' since it isn't a known property of 'tr'. (" ][stock-transaction-item]="stockTransactionItem"> "): [email protected]:63 ; Zone: ; Task: Promise.then ; Value: Error: Template parse errors: Can't bind to 'stock-transaction-item' since it isn't a known property of 'tr'. (" ][stock-transaction-item]="stockTransactionItem"> "): [email protected]:63
株式transactions.component.html:
<div class="row">
<div class="col-md-6 col-md-push-3">
<div class="col-md-8" *ngIf="stockTransactions">
<h1>Stock Transactions</h1>
<table class="table table-hover">
<thead>
<tr>
<th>Date</th>
<th>Type</th>
<th>Supplier</th>
<th>Qty</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let stockTransaction of stockTransactions" [stock-transaction-item]="stockTransaction"></tr>
</tbody>
</table>
</div>
</div>
株式transactions.component.ts:
import { Component, OnInit, Input } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { StockTransactionModel } from '../../models/stock-transaction.model';
import { RestService } from '../../services/rest.service';
@Component({
selector: '[stock-transaction]',
templateUrl: './stock-transactions.component.html',
styleUrls: ['./stock-transactions.component.css']
})
export class StockTransactionsComponent implements OnInit {
stockTransactions: Array<StockTransactionModel>;
productCode: string;
constructor(private restService: RestService, private route: ActivatedRoute) {
}
showStockTransactions(productCode: string) {
this.restService.getStockTransactions(productCode)
.subscribe(
(res) => {
this.stockTransactions = res;
console.log(this.stockTransactions);
},
(res) => {
console.log("failure " + res);
}
);
}
ngOnInit() {
this.productCode = this.route.snapshot.params['productCode']
this.showStockTransactions(this.productCode);
}
}
株式取引item.component.html:
<td>{{stockTransactionItem?.Date | date}}</td>
<td>{{stockTransactionItem?.TransactionType_Name}}</td>
<td>{{stockTransactionItem?.SupplierMaster_Name}}</td>
<td>{{stockTransactionItem?.Qty}}</td>
株式取引item.ts:
import { Component, OnInit, Input } from '@angular/core';
import { StockTransactionModel } from '../../models/stock-transaction.model';
@Component({
selector: 'stock-transaction-item',
templateUrl: './stock-transaction-item.component.html',
styleUrls: ['./stock-transaction-item.component.css']
})
export class StockTransactionItemComponent implements OnInit {
@Input("stock-transaction-item") stockTransactionItem: StockTransactionModel;
constructor() { }
ngOnInit() {
}
}
おかげにテンプレートを変更します!セレクタがなぜ内部にある必要があるのか説明してください。 – user2094257
[属性セレクタ](https://angular.io/docs/ts/latest/guide/attribute-directives.html)です。したがって、html要素のプロパティ。角かっこなしで使用すると、HTML要素にすると動作します: ' stock-transaction-item>'です。デフォルトのセレクタについては、[** here **](http://www.w3schools.com/cssref/css_selectors.asp)を参照することもできます –
PierreDuc