2016-12-05 54 views
0

我想从控制器访问属性“状态”,只需执行一些操作,但我无法获取此属性并执行任何其他操作。我分享我下面的代码:无法从响应中获取单个属性Angular 2

TasksController:

[HttpGet] 
public ActionResult GetTasks() 
{ 
    var q = (from a in db.Tsk 
     join b in db.TType on a.TaskTypeID equals b.TaskTypeID 
     join c in db.Prior on a.PriorityID equals c.PriorityID 
     join d in db.Usr on a.AssignedTo equals d.Employees.EmpName 
     select new 
     { 
      a.TaskID, 
      a.TaskCode, 
      a.AssignedTo, 
      a.Date, 
      a.DueDate, 
      a.Status, 
      a.Reply, 
      a.PriorityID, 
      a.TaskTypeID, 
      b.TaskType, 
      c.Priorities, 
      d.Login 
     }).ToList().Skip(1).AsEnumerable(); 
     db.Configuration.ProxyCreationEnabled = false; 
     return Json(q, JsonRequestBehavior.AllowGet); 
} 

AppService服务:

import { Injectable } from '@angular/core'; 
import { Http, Headers, Response } from '@angular/http'; 
import 'rxjs/add/operator/map'; 
import 'rxjs/add/operator/filter'; 
import { Observable } from 'rxjs/Observable' 

@Injectable() 

export class AppService { 
constructor(private _http: Http) { } 

//Task Register 
getFTRs(c: string) { 
return this._http.get('Tasks/GetTasks').map(res => res.json().filter(a => a.Login === c)); 
} 
} 

HomeComponent:

import { Component, OnInit, Input } from '@angular/core'; 
import { AuthenticationService } from '../_services/index'; 
import { AppService } from '../app.service'; 
import { LoginComponent } from '../login/index'; 
import { User, TaskRegisters } from '../contract'; 
import { Message } from '../message'; 

@Component({ 
    moduleId: module.id, 
    selector: 'home', 
    templateUrl: 'home.component.html', 
    providers: [LoginComponent] 
}) 

export class HomeComponent implements OnInit { 
    users: User[]; 
    tasks: string; 
    msgs: Message[] = []; 
    curr: any; 
    constructor(private userService: AuthenticationService, 
     private Tsk: AppService, 
     private Log: LoginComponent) { } 

    ngOnInit() { 
     debugger; 
     this.curr = localStorage.getItem('currentUser').slice(1); 
     this.Tsk.getFTRs(this.curr).subscribe(
      res => { 
       this.tasks = res.Status, 
        error => console.log(error) 
      }); 
     if (this.tasks) { 
      this.msgs.push({ severity: 'error', summary: 'Task Assigned', detail: 'A new task has been assigned to you' }) 
     } 
    } 
} 

状态是一个布尔值,如果布尔是true,我想在消息数组中推送消息。我无法获得Status的值并将其存储在Home组件的任务变量中。每当我运行该程序时,都会显示此任务为未定义的,因此无法进行比较。任何帮助将不胜感激。

回答

1

变化:

this.Tsk.getFTRs(this.curr).subscribe(
      res => { 
       this.tasks = res.Status, 
        error => console.log(error) 
      }); 
     if (this.tasks) { 
      this.msgs.push({ severity: 'error', summary: 'Task Assigned', detail: 'A new task has been assigned to you' }) 
     } 

this.Tsk.getFTRs(this.curr).subscribe(
      (res) => { 
       console.log(res); //What does this print? 
       this.tasks = res.Status; 
       console.log(this.tasks); //What does this print? 
       if (this.tasks) { 
         this.msgs.push({ severity: 'error', summary: 'Task Assigned', detail: 'A new task has been assigned to you' }) 
       } 
      }, 
      (error) => {console.log(error);} 
    ); 

既然你assingning this.tasksgetFRSs'回调是异步,你的时间在下面用它在if声明它是undefined

+0

this.tasks仍然是不确定的 –

+0

@RehanSiddiqui什么呢'的console.log(RES);'打印内部认购?检查我更新的答案。 – echonax

+0

它记录一个[对象含有AssignedTo: “贾汉吉尔” 日期: “/日期(1480705200000)/” DUEDATE: “/日期(1481137200000)/” 登录: “贾汉吉尔” 优先级: “紧急” PriorityID: 2 回复:假 状态:真正 TaskCode: “03/2” 的TaskID:4 任务类型: “个人” TaskTypeID:1 –

0

由于this.tasks现在提供给我@echonax的编辑我这样做是为了使工作后!

ngOnInit() { 
     debugger; 
     this.curr = localStorage.getItem('currentUser').slice(1); 
     this.Tsk.getFTRs(this.curr).subscribe(
      res => { 
       this.tasks = res; 
       for (let i = 0; i < this.tasks.length; i++){ 
        if (this.tasks[i].Status) { 
         this.msgs.push({ severity: 'error', summary: 'Task Assigned', detail: 'A new task has been assigned to you' }) 
        } 
       } 
      }, 
      error => console.log(error) 
     )} 
相关问题