2017-05-05 165 views
1

我有四个需要在后端验证的输入字段。所以我写了一个服务调用和基于输出我需要添加类到输入字段。所以如果确定,那么绿色其他红色。Angular2 Click方法总是返回假值

我想为所有后端的验证使用相同的方法。所以我试图从点击函数返回布尔值,但它总是返回false。这里是我的代码: -

<div class="row"><div class="col-md-2 col-md-offset-2 nopadding"><div class="form-group pull-right"><label>Query1:</label></div></div><div class="col-md-4 col-md-offset-0"><div class="form-group input-group"><input type="text" [ngClass]="{red: !(query1ok),green: (query1ok)}" class="form-control" name="query1" id="query1" [(ngModel)]="sampledetails.rules[0].query1"><span class="input-group-btn"><a href="javascript:void(0)" class="btn btn-default" alt="validate query" (click)="[query1ok]:validateQuery(query1ok,sampledetails.rules[0].query1)" type="button"><i class="fa fa-play"></i></a></span></div></div></div> <div class="row"><div class="col-md-2 col-md-offset-2 nopadding"><div class="form-group pull-right"><label>Query2:</label></div></div><div class="col-md-4 col-md-offset-0"><div class="form-group input-group"><input type="text" [ngClass]="{red: !(query2ok),green: (query2ok)}" class="form-control" name="query2" id="query2" [(ngModel)]="sampledetails.rules[0].query2"><span class="input-group-btn"><a href="javascript:void(0)" class="btn btn-default" alt="validate query" (click)="validateQuery(query2ok,samplerdetails.rules[0].query2)" type="button"><i class="fa fa-play"></i></a></span></div></div></div><div class="row"><div class="col-md-2 col-md-offset-2 nopadding"><div class="form-group pull-right"><label>Query3:</label></div></div><div class="col-md-4 col-md-offset-0"><div class="form-group input-group"><input type="text" [ngClass]="{red: !(query3ok),green: (query3ok)}" class="form-control" name="query3" id="query3" [(ngModel)]="samplerdetails.rules[0].query3"><span class="input-group-btn"><a href="javascript:void(0)" class="btn btn-default" alt="validate query" (click)="validateQuery(query3ok,ssampledetails.rules[0].query3)" type="button"><i class="fa fa-play"></i></a></span></div></div></div><div class="row"><div class="col-md-2 col-md-offset-2 nopadding"><div class="form-group pull-right"><label>Query4:</label></div></div><div class="col-md-4 col-md-offset-0"><div class="form-group input-group"><input type="text" [ngClass]="{red: !(query4ok),green: (query4ok)}" class="form-control" name="query4" id="query4" [(ngModel)]="samplerdetails.rules[0].query4"><span class="input-group-btn"><a href="javascript:void(0)" class="btn btn-default" alt="validate query" (click)="validateQuery(query4ok,sampledetails.rules[0].query4)" type="button"><i class="fa fa-play"></i></a></span></div></div></div> 


validateQuery(querystatus, query){ 
    this._validatorService.validateQuery(query).subscribe(
      (data) => { 
       return false; 
      }, 
      (err) =>{ 
      return true; 
      } 
     ); 
    } 

所以想知道,如果它能够在angular2,如果是从返回点击功能布尔值,然后怎么样?

回答

1

你应该返还认购数据如下

validateQuery(querystatus, query){ 
    this._validatorService.validateQuery(query).subscribe(
      (data) => { 
       return data;////////////////////////// 
      }, 
      (err) =>{ 
      return true; 
      } 
     ); 
    } 

更新在HTML 1

validateQuery(querystatus, query){ 
    this._validatorService.validateQuery(query).subscribe(
      (data) => { 
       this.queryok= false; 
      }, 
      (err) =>{ 
       this.queryok= true; 
      } 
     ); 
    } 

你的函数调用将作为

(click)="validateQuery(query1ok,sampledetails.rules[0].query1)" 
+0

我试过这样。同样的错误。当它返回布尔型的错误数据时,我想返回false。我的数据是真实的,但仍然在点击方法中出现错误。只是想检查我是否正确地分配了返回值?这里是我的代码: - **'(click)=“query1ok = validateQuery(query1ok,sampledetails.rules [0] .query1)”** – NJin

+0

是否可以在团队查看器中使用? 'query1ok'是什么意思? – Aravind

+0

抱歉无法访问团队查看器。 query1ok是我在我的类中声明的一个变量,如** query1ok:boolean = true; **和它用于ngClass中的条件的相同变量 – NJin