2016-09-08 41 views
4

TLDR:@Input可以是可選的嗎?

所以我有這個孩子組件是創建交易模式(銀行條款),我想升級這種模式是創建或更新交易。帶可選輸入的Angular2子組件

目前,模態只是一組輸入字段和一個用於創建的提交按鈕。 我想實現的是,當這個組件獲得一個事務作爲輸入時,它將處於'編輯模式',當它不在'創建模式'​​時(這意味着輸入字段已經被填充數據處於編輯模式並且在創建模式下爲空)

@Input transaction可以以某種方式是可選的嗎?

回答

2

是的。更有甚者,乾脆做到這一點如果你想改變

<div *ngIf="transaction">Some edit stuff</div> 
<div *ngIf="!transaction">Create stuff</div> 

如果你想具體的東西

ngOnInit() { 
    if(!this.transaction) { 
    // create stuff only 
    } else { 
    // update stuff only 
    } 
} 

編輯:我會怎麼做(你的情況)

這可能不是最好的解決方案,但應該工作(如果我沒有弄錯句法)

ngOnInit() { 
    if(!this.transaction) { 
    this.transaction = new Transaction(); 
    } 
} 

這樣所有的類屬性都可用,只有空的。除非您希望預定義它們,否則可以將它們設置爲構造函數或ngOnInit。

+0

我不想在我的模板中發生的事情是有雙重元素,我只是想'''被填充或不填充數據,因此我想使用可選的'@ Input',你說過它是可能的,那我該如何實現呢? –

+0

我編輯過。我真的不知道這是否是一個好的解決方案,但是像這樣的東西對我有用 –

+0

我明白了,這樣我就可以放置一個'' –