получение ошибки при обновлении приложения angular до версии 10

#angular #typescript

#angular #typescript

Вопрос:

Я запускаю демонстрационное приложение.Я новичок в angulat. и ниже приведен мой компонент списка caltegory.

 import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';

import { AngularGridInstance, Column, GridOption, GraphqlService, GraphqlResult, Filters, Formatters, OnEventArgs, FieldType } from 'angular-slickgrid';

import { CategoryDataService } from 'src/app/core/services/category-data.service';
import { PageService } from 'src/app/core/services/page.service';


const GRAPHQL_QUERY_DATASET_NAME = 'categories';


@Component({
  templateUrl: './category-list.component.html',
  styleUrls: ['./category-list.component.css']
})
export class CategoryListComponent implements OnInit {
  angularGrid: AngularGridInstance;
  columnDefinitions: Column[];
  gridOptions: GridOption;
  dataset = [];

  constructor(private dataService: CategoryDataService, private router: Router, private pageService: PageService) {
  }

  ngOnInit(): void {
    this.columnDefinitions = [
        ...removed
    ];

    this.gridOptions = {
      backendServiceApi: {
        service: new GraphqlService(),
        options: {
          columnDefinitions: this.columnDefinitions,
          datasetName: GRAPHQL_QUERY_DATASET_NAME
        },
        process: (query) => this.getCategories(),
      }
    };;
  }

 
  getCategories(): Observable<GraphqlResult> {
    var args = this.pageService.getPageArgs(this.angularGrid);

    return this.dataService.searchCategories(args)
      .pipe(map(
        page => {
          var result: GraphqlResult = {
            data: {
              [GRAPHQL_QUERY_DATASET_NAME]: {
                nodes: page.items,  ---here i am getting error
                pageInfo: {
                  hasNextPage: page.hasNextPage
                },
                totalCount: page.totalCount
              }
            }
          };

          return resu<
        }));
  }
}
  

Демонстрационный проект работал нормально раньше. и когда я обновился до последней версии slick grid, я получаю сообщение об ошибке ниже .. он показывает, что не вводит никаких…
Пожалуйста, дайте мне знать, как преобразовать общий класс в любой тип..Спасибо

Ошибка

И интерфейс для разбивки на страницы.

 export interface IPagedList<T> {
     pageIndex: number;
     .... removed
    
    items: T[];
}
  

Ошибка:
Тип значения вычисляемого свойства — ‘{ nodes: IProduct[]; pageInfo: {hasNextPage: boolean; }; totalCount: number; }’, которое нельзя присвоить типу ‘any[]’. Литерал объекта может указывать только известные свойства, а «узлы» не существуют в типе «any []».

Ответ №1:

В версии Angular-Slickgrid произошло небольшое критическое изменение 2.15.x , я добавил новый тип GraphqlPaginatedResult при использовании разбивки на страницы, а GraphqlResult когда вы этого не делаете, он более репрезентативен для того, какой из них какой. Итак, вам просто нужно переключить свой тип на GraphqlPaginatedResult . Я не хотел выпускать последнюю версию ( 3.x ) только для этого 1 небольшого изменения типа (и я думал, что никто не использует часть GraphQL, lol), поэтому вам нужно будет обновить свой код (просто выполните поиск замену с GraphqlResult на GraphqlPaginatedResult ).

 getCategories(): Observable<GraphqlPaginatedResult> {
  

Это было объяснено в журнале изменений этого выпуска.

Также, когда это изменение было сделано, я создал новый пример 27 — Graphql без разбивки на страницы, который используется GraphqlResult , в то время как в предыдущем примере 6 — Graphql используется новый GraphqlPaginatedResult тип.