2017-09-12 44 views
0

我有一個困難時期試圖設置使用Angular2驅動方法的數據的最大值。 我想輸入的最大值設置爲一個名爲userLimit財產,這是我從火力得到。這是我的代碼:使用屬性爲Angular2形式驗證(數據驅動)

component.ts

import { Component, OnInit, AfterViewInit } from '@angular/core'; 
import { FormBuilder, FormGroup, Validators, FormControl } from "@angular/forms"; 
import { FiredbService } from '../services/firedb.service'; 
import { AuthService } from '../services/auth.service'; 
import { AngularFireDatabase, FirebaseListObservable, FirebaseObjectObservable } from 'angularfire2/database'; 

@Component({ 
    selector: 'my-dashboard', 
    styleUrls: ['./recibirpago.component.scss'], 
    templateUrl: './recibirpago.component.html' 
}) 
export class RecibirpagoComponent implements OnInit, AfterViewInit { 

    myForm2: FormGroup; 
    uid: string; 
    userLimit: any; 

    constructor(private fb: FormBuilder, 
       private dbfr: FiredbService, 
       private db: AngularFireDatabase, 
       private authService: AuthService) { 

    this.myForm2 = this.fb.group({ 
     email: ['', Validators.email], 
     clpmount: ['', [Validators.required, Validators.max(this.userLimit)]] 
     }); 

    } 

ngOnInit() { 
    this.uid = this.authService.getUserUid(); 
} 

ngAfterViewInit() { 
    this.dbfr.getUserLimit(this.uid).subscribe(snapshot => {   
    this.userLimit = snapshot.val().accountLimit; 
    console.log(this.userLimit); 
    }) 
} 

如果我寫,例如,Validators.max(5000)它的工作原理,但如果我嘗試從火力地堡獲取數據這是行不通的。

感謝您的幫助!

+0

嘗試獲得userLimit的價值,你的formbuilder在構造函數 – JayDeeEss

回答

0

問題是,構造函數在之前執行ngAfterViewInit,所以你沒有userLimit的值在那一點。

而是使用內部認購setVAlidators方法你在哪裏得到的數據。

事情是這樣的:

構造

this.myForm2 = this.fb.group({ 
    email: ['', Validators.email], 
    clpmount: ['', Validators.required] // <-- not here 
    }); 

ngAfterViewInit

ngAfterViewInit() { 
    this.dbfr.getUserLimit(this.uid).subscribe(snapshot => {   
    this.userLimit = snapshot.val().accountLimit; 
    console.log(this.userLimit); 
    const clpControl = this.myForm2.get(`clpmount'); 
    clpControl.setValidators(Validators.max(this.userLimit)); // <-- HERE 
    clpControl.updateValueAndValidity(); 
    }) 
} 

注:語法沒有被檢查。

+0

感謝的人創建表單之前!有效! –