Javascript 离子选择不显示FormBuilder的选定选项(离子3)

Javascript 离子选择不显示FormBuilder的选定选项(离子3),javascript,angular,ionic2,ionic3,Javascript,Angular,Ionic2,Ionic3,以下面的html为例 <form [formGroup]="detailsForm"> <ion-list> <ion-item> <ion-label>Gaming</ion-label> <ion-select formControlName="gaming"> <ion-option value="nes">NES</ion-option>

以下面的html为例

  <form [formGroup]="detailsForm">

  <ion-list>
  <ion-item>
    <ion-label>Gaming</ion-label>
    <ion-select formControlName="gaming">
      <ion-option value="nes">NES</ion-option>
      <ion-option value="n64">Nintendo64</ion-option>
      <ion-option value="ps">PlayStation</ion-option>
      <ion-option value="genesis">Sega Genesis</ion-option>
      <ion-option value="saturn">Sega Saturn</ion-option>
      <ion-option value="snes">SNES</ion-option>
    </ion-select>
  </ion-item>
  </ion-list>

  </form>
我希望在加载视图时看到“NES”作为所选选项。然而,它并没有出现。如果改为使用[(ngModel)],它将起作用

是我做错了什么,还是最近的爱奥尼亚更新导致了这个问题


任何帮助都会很好。

这只是3.1的问题。它要么是传递整个事件而不是过去的值的突破性变化,要么与在用户交互之前加载组件时触发
ionChange
有关(或者第一件事导致第二件事)。现在就使用3.0。

下面是我如何解决这个问题的(因为它仍在离子3.5.0中出现):


{{state}}
以及相应的打字脚本:

public onSelectClicked (): void {
  const options: HTMLCollectionOf<Element> = document.getElementsByClassName('alert-tappable alert-radio')
  setTimeout(() => {
    let i: number = 0
    const len: number = options.length
    for (i; i < len; i++) {
      if ((options[i] as HTMLElement).attributes[3].nodeValue === 'true') { // This is the selected option
        options[i].scrollIntoView({block: 'end', behavior: 'smooth'})
      }
    }
  }, 500) // Leave enough time for the popup to render
}
public onSelectClicked():void{
常量选项:HTMLCollectionOf=document.getElementsByClassName('alert-tappable alert radio')
设置超时(()=>{
设i:number=0
const len:number=options.length
对于(i;i
我不知道是否有办法使用表单,但我一直在使用 一个
ng模型
,它工作得很好

请看下面的代码:

<ion-list>
    <ion-item>
        <ion-label>Gaming</ion-label>
        <ion-select [(ngModel)]=gaming>
            <ion-option value="nes">NES</ion-option>
            <ion-option value="n64">Nintendo64</ion-option>
            <ion-option value="ps">PlayStation</ion-option>
            <ion-option value="genesis">Sega Genesis</ion-option>
            <ion-option value="saturn">Sega Saturn</ion-option>
            <ion-option value="snes">SNES</ion-option>
        </ion-select>
    </ion-item>
</ion-list>
然后插入值

$scope.gaming=['nes'];
这应该行得通

<ion-list>
    <ion-item>
        <ion-label>Gaming</ion-label>
        <ion-select [(ngModel)]=gaming>
            <ion-option value="nes">NES</ion-option>
            <ion-option value="n64">Nintendo64</ion-option>
            <ion-option value="ps">PlayStation</ion-option>
            <ion-option value="genesis">Sega Genesis</ion-option>
            <ion-option value="saturn">Sega Saturn</ion-option>
            <ion-option value="snes">SNES</ion-option>
        </ion-select>
    </ion-item>
</ion-list>
public gaming: any;
$scope.gaming=['nes'];