FlexboxLayout addChild не является функцией

Мне нужно смонтировать визуализацию для данных, загруженных REST API, но выдает ошибку при динамическом создании машинописным текстом. Данные приходят правильно с сервера.

<FlexboxLayout
    flexWrap = "wrap"
    #flex
>
</FlexboxLayout>

На машинописном тексте:

import { FlexboxLayout } from 'tns-core-modules/ui/layouts/flexbox-layout/flexbox-layout';
import { StackLayout } from 'tns-core-modules/ui/layouts/stack-layout';
import { Image } from 'tns-core-modules/ui/image';
import { Label } from 'tns-core-modules/ui/label';

// ...

@ViewChild('flex',{static: false}) flex: FlexboxLayout;

ngOnInit() {
  // Populate the categories variable with server data

  categories.forEach((cat) => {
    this.createCategView(cat);
  });
}

createCategView(c: Category) {
  let stack = new StackLayout();
  let img = new Image();
  img.src = c.image;
  img.stretch = "none";
  img.width = 25;
  img.height = 25;

  let label = new Label();
  label.text = c.name;

  stack.addChild(img);
  stack.addChild(label);

  this.flex.addChild( stack );
}

Но эта последняя командная строка возвращает ошибку о том, что метод this.flex.addChild не является функцией.

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
0
100
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если я не ошибаюсь, вы можете только назначить Angular Component как тип переменной, аннотированной с помощью ViewChild. Таким образом, вы не можете читать flex как FlexboxLayout, но ЭлементСсылка.

@ViewChild('flex',{static: false}) flex: ElementRef;

Также ngOnInit может быть слишком рано, попробуйте ngAfterViewInit или loaded событие самого макета.

Привет, @Manoj, спасибо! Я сделал то, что вы рекомендовали, вызвал метод ngAfterViewInit и изменил FlexboxLayout на ElementRef. Потому что для добавления внутрь FlexBox достаточно сделать следующее: let component: ==> FlexboxLayout = this.flex.nativeElement; component.addChild (стек);

Donadon 23.07.2019 21:15

пусть компонент: FlexboxLayout = this.flex.nativeElement;

Donadon 23.07.2019 21:30

component.addChild (стек);

Donadon 23.07.2019 21:30

Другие вопросы по теме