Angular2嵌套的*ngIf和*ngFor为迭代输入字段填充相同的值

Angular2嵌套的*ngIf和*ngFor为迭代输入字段填充相同的值,angular,ionic2,Angular,Ionic2,我有Angularjs中的旧模板,如下所示: <div class="col col-50" align="left" ng-if="enterTextViewRight"> <!-- enterTextViewRight --> <div ng-repeat="item in randomWord_pair" id="list_two"> <div style="border:1px dotted g

我有Angularjs中的旧模板,如下所示:

    <div class="col col-50" align="left" ng-if="enterTextViewRight"> <!-- enterTextViewRight -->  
        <div ng-repeat="item in randomWord_pair" id="list_two">
            <div style="border:1px dotted gray; border-radius:5px; padding:10px; font-size:15px;height:50px;">
                <input style="margin:0px;" placeholder="Type here" ng-model="pair" type="text" ng-change="rightPartnerCheck(pair,item.word)" />
                <span style="float:right; margin-top: -30px;" ng-show="showPartner[pair]" align="right"><i class="ion-checkmark myCheckmark"></i></span>
            </div>
        </div>
    </div>
randomWord_pair[]包含其中一些元素

rightPartnerCheck(p,i_p){
    console.log("right partner check")
    console.log(p + " " + i_p)

    if(this.rightPartnerCheckList[i_p] == p){
        this.showPartner[p] = true;
        if(this.enteredSequence.indexOf(p)==-1){
            this.enteredSequence.push(p)
            console.log(this.enteredSequence)
            console.log("Entered sequence: ")
            console.log(this.enteredSequence)
        }
    }
}
更新3原始代码的屏幕截图(所有输入框显示相同的值,但每个框中输入的文本都将输入到所需的数组中)


一种解决方法是使用
$event
并捕获输入字段的值:

<input type="text" (keyup)="rightPartnerCheck($event, item.word)" />

似乎angularjs和angular2代码已切换。您可以使用
而不是
,然后您可以使用相同的
*ngFor
*ngIf
语法,就像将其添加到普通元素(如
)哦,是的,抱歉,我将更新我的问题您在标题中提到了一个错误,但该问题不包含错误消息。我假设这三个问题都是填充的,因为ngModel是相同的,即
。所以完全删除模型?是的,如果您有,这将不起作用。因为当前对对于所有输入字段都是相同的,所以值将是相同的。但是这对
是什么,它与
有什么关系?知道可能会有帮助,所以这可能是一个“更好”的解决方案…我已经更新了我的问题:)这个解决方案给了我错误,删除了模型,而是发送了错误。它应该可以工作:我找到了它。我在输入中使用了#pair,然后在span中使用了
*ngIf=“showPartner[pair.value]”
。非常感谢你的回答。angular1和angular2的工作方式有点棘手
randomWord_pair: any;
/* Word pairs those will be presented to the user */
word_pair = [

{'word':'Angst', 'pair':'Butter'},
{'word':'Ball', 'pair':'Faden'},
{'word':'Fluss', 'pair':'Geld'},
{'word':'Kissen', 'pair':'Messe'},
{'word':'Glas', 'pair':'Hals'},
{'word':'Berg', 'pair':'Dose'},
{'word':'Kuchen', 'pair':'Messer'},
{'word':'Ferien', 'pair':'Herz'},
{'word':'Nacht', 'pair':'Pilz'},
{'word':'Rahmen', 'pair':'Sache'},
{'word':'Tür', 'pair':'Sonne'},
{'word':'Scheibe', 'pair':'Wort'}

]
rightPartnerCheck(p,i_p){
    console.log("right partner check")
    console.log(p + " " + i_p)

    if(this.rightPartnerCheckList[i_p] == p){
        this.showPartner[p] = true;
        if(this.enteredSequence.indexOf(p)==-1){
            this.enteredSequence.push(p)
            console.log(this.enteredSequence)
            console.log("Entered sequence: ")
            console.log(this.enteredSequence)
        }
    }
}
<input type="text" (keyup)="rightPartnerCheck($event, item.word)" />
rightPartnerCheck(event, word) {
  console.log(event.target.value, word);
}