2016-12-13 1 views
0

Просто быстрый вопрос, если кто-нибудь знает, как это решить, но у меня есть некоторые проблемы с входным флажком.Angular2 ngModel checkbox undefined

Он настроен следующим образом

<input type="checkbox" [(ngModel)]="settings.ht_enabled" (ngModelChange)="changeSetting('ht_enabled')" id="setting-ht_enabled"> <label for="setting-ht_enabled">ht enabled</label> 

Каждый раз, когда я нажимаю флажок значение моей модели становится неопределенным, и (ngModelChange) сработал, который делает только console.log. Настройки установлены правильно, и я вижу установленный флажок. Только когда я нажимаю на него, значение моей модели становится неопределенным.

Другое дело, что этот проект Angular2 работает как веб-рабочий.

У кого-нибудь были подобные проблемы и он знает, как это решить?

компонент за этот кусок HTML является

@Component({ 
    selector: 'app-setting-form', 
    templateUrl: './setting-form.component.html', 
    styleUrls: ['./setting-form.component.css'], 
    changeDetection: ChangeDetectionStrategy.OnPush 
}) 
export class SettingFormComponent { 
    settings: Setting; 

    constructor(
    private service: SettingService, 
    private cdr: ChangeDetectorRef, 
    private messageBrokerService: MessageBrokerService, 
) { 
    this.messageBrokerService.send('access_token', '', this.initialize.bind(this)); 
    } 

    initialize(token) { 
    this.service.getSettings(token).subscribe(settings => this.handleSettings(settings)); 
    } 

    handleSettings(settings: any) { 
    this.settings = new Setting(settings); 
    this.cdr.markForCheck(); 
    } 

    changeSetting(setting: string) { 
    console.log(this.settings); 
    } 
} 
+0

Вы можете разместить немного вашей JavaScript? –

+0

У вас есть объект «настройки» в вашем javascript? –

+0

Вы пытались инициализировать 'settings'? Кажется, что у него нет никакой ценности. –

ответ

0

Я сделал быстрый обходной путь, как это кажется, что значение флажка не устанавливает ngModel должным образом в Angular2. Я не знаю, связано ли это с проектом, выполняемым внутри веб-рабочего, но я получил его работу следующим образом.

<input type="checkbox" [(ngModel)]="settings.ht_enabled" (click)="changeSetting('ht_enabled')" id="setting-ht_enabled"> <label for="setting-ht_enabled">ht enabled</label> 

и функция changeSettings является

changeSetting(setting: string) { 
    this.settings[setting] = !this.settings[setting]; 
    console.log(this.settings); 
} 

Я удалил (ngModelChange) и добавил свое собственное событие щелчка

 Смежные вопросы

  • Нет связанных вопросов^_^