【问题标题】:angular2 Validator Error: Template parse errors:(…)angular2 验证器错误:模板解析错误:(…)
【发布时间】:2016-11-09 09:29:24
【问题描述】:

我有问题。在控制台中,我可以看到“错误:模板解析错误:(…)”。我正在使用:

"@angular/common": "2.0.0-rc.6",

"@angular/compiler": "2.0.0-rc.6",

"@angular/core": "2.0.0-rc.6",

我的表单看起来像

    <form name="authForm" novalidate="" ng-submit="login()" class="md-padding" [ngFormModel]="form">
        <div layout="column" class="layout-column">
            <div class="md-form" style="margin-bottom: 64px; margin-top: 20px">
                <input ngControl="" class="mdl-textfield__input" [(ngModel)]="user.number" name="number" type="tel" (focus)="focus()" (blur)="focusOut()" [textMask]="{mask: mask}" id="number" required ngControl="number" #number="ngForm">
                <label class="mdl-textfield__label" [class.active]="user.number != null" for="number">Numer telefonu</label>
            </div>
            <div *ngIf="!number.valid" class="alert alert-danger">
                <span>Cos nei halo</span>
            </div>
            <div class="md-form" style="margin-bottom: 44px">
                <input class="mdl-textfield__input" [(ngModel)]="user.password" name="password" (focus)="focusPass()" (blur)="focusOutPass()" type="password" id="passInput" required>
                <label class="mdl-textfield__label" [class.active]="user.password != null" for="number">Hasło</label>
            </div>
            <a class="router" routerLink="/panel"><button (click)="logIn($event)" class="md-raised md-accent md-button md-ink-ripple " [class.active]="user.password != null && user.number != null" style="width: 320px" type="submit" aria-label="Zaloguj się"><span>Zaloguj się</span></button></a>
        </div>
    </form>

我的 .ts 文件

    import {Component, Output, EventEmitter} from '@angular/core';
import {AngularFire, FirebaseObjectObservable} from 'angularfire2';
import {Http, Response} from '@angular/http';
import {UserDataService} from '../index';
import {LoginService} from "../login.service";
import { FormBuilder, ControlGroup, Control, Validators, FORM_PROVIDERS, FORM_DIRECTIVES } from 'angular2/common';


/**
 * This class represents the lazy loaded loginComponent.
 */
@Component({
    selector: 'box-login',
    templateUrl: 'login.component.html',
    styleUrls: ['login.component.css'],
})
export class LoginComponent {
    private user = {number: null, password: null};
    private firebaseSession: FirebaseObjectObservable<any>;
    public mask = ['+', /[1-9]/, /\d/, ' ', /\d/, /\d/, /\d/, ' ', /\d/, /\d/, /\d/, ' ', /\d/, /\d/, /\d/]

    @Output() notify: EventEmitter<boolean> = new EventEmitter<boolean>();

    form: ControlGroup;

    constructor(private af: AngularFire,private _LoginService: LoginService, private http: Http, private _userDataService: UserDataService, private formnbuilder: FormBuilder) {
        this.form = formnbuilder.group({
            number: ['', Validators.required],
            password: []
        })
    }

我不知道问题出在哪里,我和其他人一样,他们工作,我没有

【问题讨论】:

标签: javascript validation angular ng-controller


【解决方案1】:

根据 Angular 2.0.0-rc.6 中的 Angular change log@angular/common 中的 API 已被删除,因此从 @angular/common 导入 FORM_DIRECTIVESFORM_PROVIDERSFormBuilder 将不起作用。

现在 angular 2.1.2 已经发布,所以最好使用最新的 angular 版本。您可以查看角度指南以更新您的 formsform validation

【讨论】:

  • 那么,是否有可能在 2.0.0-rc.6" 中进行验证?
  • 我认为您需要从 @angular/forms 而不是 @angular/common 导入。此外,指令的名称在 rc6 中也发生了更改,因此您需要更改名称和使用表单指令的方式,例如 ngFormngFormModel。因此,最好在进行任何更改之前先检查更改日志。
猜你喜欢
  • 2016-12-25
  • 2017-05-27
  • 2017-01-31
  • 2017-03-01
  • 2017-05-01
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 2018-01-27
相关资源
最近更新 更多