0
특정 질문을 이미 확인했지만 여전히 문제를 해결하지 못했습니다. 내가 관찰 가능한을 반환 내 응용 프로그램에서 서비스를 사용하고, 모든이 단계에 괜찮지 만, 내가 데이터를 표시 할 때 아무 일도 발생하지 않습니다 :angular 2 * ngFor 및 Observables Object, 데이터가 표시되지 않음
@Injectable()
export class DataService {
private APIURL = 'http://api.dev/';
constructor(private http: Http) {
}
_API_getEvents:string = this.APIURL + "getEvents";
getEvents() : Observable<IEvent[]> {
return this.http.get(this._API_getEvents)
.map((res:Response) => res.json())
.catch(this.handleError);
}
private handleError (error: Response | any) {
// In a real world app, we might use a remote logging infrastructure
let errMsg: string;
if (error instanceof Response) {
const body = error.json() || '';
const err = body.error || JSON.stringify(body);
errMsg = `${error.status} - ${error.statusText || ''} ${err}`;
} else {
errMsg = error.message ? error.message : error.toString();
}
console.error(errMsg);
return Observable.throw(errMsg);
}
}
이벤트 인터페이스 :
export interface IEvent {
id: number;
name: string;
created_at:Date;
update_at:Date;
}
과 구성 요소 :
events:IEvent[];
//events:any[];
constructor(private _http:Http, private _dataService: DataService)
{
this._dataService.getEvents()
.subscribe(
function(response) { console.log("Success Response" + response);
this.events = response;
console.log('EVENTS: ');
console.log(this.events);
},
function(error) { console.log("Error happened" + error)},
function() { console.log("the subscription is completed")}
);
}
내가 표시하기 위해 노력하고있어, 그 빈 :
<ul *ngIf="events">
<li *ngFor="let event of events">
<a [routerLink]="['/gallery/', 'event1']">
{{event.name}}
</a>
</li>
...
무엇이 문제 일 수 있습니까?
plunkr에 ur 코드를 넣을 수 있습니까? 나는 작동하지 않는 것을 거의 찾을 수 없다. 데이터가 componenet 레벨에서 위안을 받고 있다고 가정합니다. – Smit
지금까지 console.log는 데이터가 성공적으로 얻어 졌음을 보여 줬지만 그 전에 렌더링 된 느낌이 들었습니다. 그러나 비슷한 주제를 검색 할 때 사람들은 일반적으로 * ng 지시어를 추가하고 문제를 해결하지만 제 경우에는 그렇지 않습니다. plunkr을 만들려고합니다 – d123546
생성자에서 코드를 ngOnInit으로 옮기는 것이 좋습니다. 구성 요소에서 Input 바인딩을 사용하기 시작하면 예상대로 작동하지 않습니다. 생성자가 호출 될 때 Angular가 아직 바인딩을 초기화하지 않았기 때문입니다. 구성 요소 생성자에서 수행하는 작업을 최소화하는 것이 좋습니다. – snorkpete