Angular 2 - невозможно связать данные из HTTP-запроса Get - PullRequest
0 голосов
/ 05 июля 2018

Я новичок в Angular 2 и у меня проблемы с привязкой некоторых данных JSON. Если я запускаю URL-адрес API в новой вкладке, я вижу возвращенный JSON, но не через мое приложение. Ниже приведены мои сервисы, компоненты и файлы для просмотра.

Service.ts

 public permission(module: string): Observable<Permissions[]> {
    return this.http
    .get('api-url')
    .map((response: Response) => {
       return <Permissions[]>response.json();
       })
}

Component.ts

_permissionsView: Permissions[];

ngOnInit() {
    this.getPermissions();
}

getPermissions() {
    this._commonService.permission('module')
    .subscribe(
        resultsArray => {
            this._permissionsView = resultsArray;
            console.log(this._permissionsView);
        },
        error => {"Error: " + error }
    )
}

Component.html

<kendo-grid [kendoGridBinding]="_permissionsView">
            ....
</kendo-grid>

Неправильно ли я подписываюсь?

Ответы [ 2 ]

0 голосов
/ 07 июля 2018

Вот рабочий пример, который я только что написал, используя Kendo UI.

Имитирует вызов веб-API, возвращающий наблюдаемое с задержкой 1000

.

https://stackblitz.com/edit/angular-kendo-datagrid-example

0 голосов
/ 05 июля 2018

Это работает для меня:

В сервисе

constructor( private http: HttpClient ) {}

getPermissions( params ) {

   const headers = new HttpHeaders()
      .set('Content-Type', 'application/json')
      .set('Accept', 'application/json')

   const url = 'http://localhost:5000/api/'  

   return this.http.get(
      url + 'permissions',
      { headers: headers }
   );        
}

В контроллере

this.dataService.getPermissions(param).subscribe( 
   data => {
      console.log('data OK !');
      console.log(data);
      this._permissionsView = data;
   },
   error => {
      console.log('data error !');
   }
);

Я не знаю, что ожидает сетка кендо для dataSource, вы пытались обернуть "селектор сетки кендо" в div с * ngIf = "_ permissionsView"? поэтому он обрабатывается после завершения вашего http-вызова.

...