我正在Ionic 4项目中工作,并且创建了一个自定义组件,但是在该自定义组件中,我的[(ngModel)]
无法正常工作。
这是我的 custom-header-component.component.html:
<ion-select [(ngModel)]="languageSelected" (ionChange)='setLanguage()' ngDefaultControl>
<ion-select-option value="en">English</ion-select-option>
<ion-select-option value="ar">Arabic</ion-select-option>
</ion-select>
在此html中,我的[(ngModel)]
无法正常工作,因为它没有在控制台中打印任何值。
这是我的 custom-header-component.component.ts:
languageSelected: any;
setLanguage() {
let me=this;
console.log('languageSelected',me.languageSelected);
}
在此ts文件中,它不打印任何值。
可能的问题是,我没有包括FormsModule
。
这是我的文件夹:
custom-header-component:
|
-- custom-header-component.component.html
-- custom-header-component.component.scss
-- custom-header-component.component.spec.ts
-- custom-header-component.component.ts
components.module.ts
这是我的 components.module.ts:
import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { CustomHeaderComponentComponent } from './custom-header-component/custom-header-component.component';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
@NgModule({
declarations: [CustomHeaderComponentComponent],
exports: [CustomHeaderComponentComponent],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
imports: [
FormsModule,
ReactiveFormsModule
],
})
export class ComponentsModule{}
非常感谢您的帮助。
答案 0 :(得分:1)
应为 <ion-option
<ion-option value="en">English</ion-option>
编辑:
如果是离子4,则您的代码看起来正确。如问题中所述,如果您未添加 FormsModule
,则需要将其添加为
import { ReactiveFormsModule } from '@angular/forms';
@NgModule({
declarations: [AppComponent],
entryComponents: [],
imports: [
BrowserModule,
IonicModule.forRoot(),
AppRoutingModule,
ReactiveFormsModule
],
providers: [
StatusBar,
SplashScreen,
{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy }
],
bootstrap: [AppComponent]
})
export class AppModule {}
答案 1 :(得分:1)
您只需要在 app.module.ts
中导入 FormsModuleimport { FormsModule } from '@angular/forms';
并在声明和 entryComponents
中添加 ComponentPage您可以看到下面的示例
在 app.module.ts
中import { FormsModule } from '@angular/forms';
import { ComponentPage } from './component/component.page'
@NgModule({
declarations: [
ComponentPage,
],
entryComponents: [
ComponentPage,
],
imports: [FormsModule],
})
答案 2 :(得分:1)
如果您不将ion-select放置在表单标签内,则需要设置name属性。如果您没有将其放置在表单标签内,则必须在ngModelOptions中将表单控件定义为“独立”。就像此示例中的搜索栏一样。
<ion-searchbar (ionInput)="UpdateSearchResults($event)" [(ngModel)]="autocomplete.input" [ngModelOptions]="{standalone: true}"></ion-searchbar>
这在Ionic 4中对我来说很好。
答案 3 :(得分:1)
另外,确保将 CustomHeaderComponent 添加到 app.module.ts 中的声明数组
像这样: app.module.ts
declarations: [...other components, CustomHeaderComponent]
答案 4 :(得分:0)
尝试一下:
<ion-select ngDefaultControl [(ngModel)]="languageSelected" (ionChange)='setLanguage($event)'>
<ion-select-option value='en' [selected]="language==='en' ? true : null">English</ion-select-option>
<ion-select-option value='ar' [selected]="language==='ar' ? true : null">Arabic</ion-select-option>
</ion-select>
setLanguage($event) {
let me=this;
console.log('Default language:', $event.target.value);
}
在这里,您可以获取选定的值。