2016-08-11 7 views
1

Я хотел бы обновить текстовое свойство TextField программно, используя привязку данных angular2. От here похоже, что я установил [(ngModel)] = "email" в моем макете, а затем в своем коде добавьте электронное письмо. При текущей настройке я могу изменить свойство текста при загрузке, но если я попытаюсь изменить программное свойство программным путем с помощью кнопки, нажмите на изменения в сообщении электронной почты, которые не отражаются в текстовом свойстве TextField.NativeScript 2/Angular 2 Связывание данных [(ngModel)] Как обновить TextField программно.

import { Component, OnInit } from '@angular/core'; 
import { User }    from '../../shared/user/user'; 
import { LoginModel }  from '../../model/login/login-model'; 
import { HttpService }  from '../../services/http/http-service'; 

@Component({ 
    selector:'login', 
    templateUrl:'pages/login/login.component.html', 
    providers: [HttpService] 
}) 

export class LoginComponent implements OnInit { 
    email:string = "[email protected]"; 
    user: User; 
    //model: LoginModel; 
    constructor(private _httpService: Httpservice) { 
     //this.model = new LoginModel(); 
     this.user = new User(); 
    } //default constructor 

    ngOnInit() {} 

    onButtonTap() { 
     //alert("onButtonTap clicked "); 
     //this._mpixService.register(this.model.user); 

     this.email = "[email protected]"; 
     alert("onButtonTap clicked " + this.email); 
    } 
} 

Мой взгляд

<ActionBar title="Login Mpix Tap To Print"> 
    <ActionItem text="Login" android.systemIcon="ic_menu_share_holo_dark" ios.systemIcon="9" ios.position="right"></ActionItem> 
</ActionBar> 
<StackLayout> 
    <TextField hint="Email Address" keyboardType="email" 
     autocorrect="false" autocapitalization="none" [text]="email"></TextField> 
    <TextField hint="Password" secure="true" keyboardType="password" 
     autocorrect="false" autocapitalization="none" [(ngModel)]="password"></TextField> 

    <Button text="Sign In" (Tap)='onButtonTap()'></Button> 
    <Button text="Sign up for Mpix" [nsRouterLink]="['/signup']"></Button> 
</StackLayout> 

Я также пробовал вариации TextField посмотреть недвижимость

<TextField hint="Email Address" keyboardType="email"  autocorrect="false" autocapitalization="none" [text]="email" (emailChange)="email=$event"></TextField> 

<TextField hint="Email Address" keyboardType="email"  autocorrect="false" autocapitalization="none" [(ngModel)]="email" [text]=email></TextField> 

<TextField hint="Email Address" keyboardType="email"  autocorrect="false" autocapitalization="none" [(ngModel)]="email">{{email}}</TextField> 

В текстовом поле устанавливается в [email protected], когда интерфейс первой загрузке.

+0

[(ngModel)] = "электронная почта" текст = {{}} электронная почта> также не работает с этим. – dsum27

ответ

0

Эта проблема была решена с недавним обновлением. Более подробная информация приведена по ссылке ниже. В основном была проблема несвязанной сборки, которая останавливала код до того, как мой код смог запустить. После обновления tns-core-modules и nativescript-angular он работал с вышеуказанным кодом.

Nativescript 2.2 exception

8

Вы, возможно, придется импорта модуль формы из NativeScript в свой импорт NgModule массива:

импорт {NativeScriptFormsModule} из "nativescript-угловых/форм";

и NgModule атрибут

@NgModule ({импорт: [NativeScriptFormsModule]})