2016-09-26 8 views
1

http 호출을 사용하여 데이터를 가져 왔습니다. 하지만, 컴파일 시간에 위의 오류가 표시됩니다.속성이 '{}'의 Angular2에 없습니다.

user.component.ts

this._user.saveUsers(model).then(data => { 
    if(data.success==true){ 
     this.router.navigate(['/user/list']); 
    }else{ 
     console.log("data") 
    } 
}); 

참고 : 내 객체가 동적입니다. 내 HTTP 호출에 따라

오류 :

응용 프로그램/사용자/users.component.ts (33,21) : 오류 TS2339 : 부동산의 '성공'유형에 존재하지 않는 '{}'. app/users/users.component.ts (34,38) : 오류 TS2339 : 'data'속성이 '{}'유형에 없습니다. app/users/users.component.ts (76,25) : 오류 TS2339 : 'success'속성이 '{}'유형에 없습니다.

+1

'this._user.saveUsers (model) .then (data => {console.log (data)})'check n 콘솔에서 무엇을 얻는 지 확인하십시오 ??? – micronyks

답변

2

그들은 당신의 코드에 나와 있지 않기 때문에 나는 선 (33, 34)에 대해 알고하지 않습니다하지만 76 당신은 내가 잘못 아니에요 경우

data: any 

또는

data: {success: any} 
0

을 넣어야 할 그것은이어야한다,

this._user.saveUsers(model).then(data => { 
    if(data.data.success==true){    //<<<===changed 
     this.router.navigate(['/user/list']); 
    }else{ 
     console.log("data") 
    } 
}); 
0

아마도 saveUsers의 정의를 게시 할 수 있습니까? es6-promise을 사용하는 경우 typings을 살펴보십시오. 볼 수 있듯이 promise 클래스는 then에 전달할 수있는 객체 유형을 정의하는 데 사용할 수있는 일반 인터페이스 T을 허용합니다. 그래서 경우에 기능 saveUsers 당신은 무엇을 당신은 간단하게 할 수있는 기능이 일반에 동의하고 그래서 지금

function saveUsers<T>(model: any) { 
    return new Promise<T>((resolve, reject) => {...}) 
} 

처럼 반환 약속에 전달해야

function saveUsers(model: any) { 
    return new Promise((resolve, reject) => {...}) 
} 

같은 약속, 즉 뭔가를 반환 saveUsers

saveUsers<{success: boolean}>(model).then(data => {...}) 

또는 바로 다음에 전달되는 데이터의 인터페이스 무엇이든 통과를 호출하면된다.

비록 그것이 es6 약속이 아니라 할지라도 당신이 돌아 오는 것은 무엇이든 입력을 확인하십시오. 확실히 전달 될 데이터 유형을 정의하는 방법이있을 것입니다.

UPDATE

당신이 saveUsers 내부 네트워크 호출을 실행하는 axios의 라인을 따라 뭔가를 사용하는 경우는 내부 data.data.success이 될 것입니다 귀하의 경우 있도록 반환 된 응답이 this 형식이있을 것이다, micronyks의 대답에 추가하려면 then 블록

관련 문제