Мне нужно смонтировать визуализацию для данных, загруженных 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 не является функцией.





Если я не ошибаюсь, вы можете только назначить Angular Component как тип переменной, аннотированной с помощью ViewChild. Таким образом, вы не можете читать flex как FlexboxLayout, но ЭлементСсылка.
@ViewChild('flex',{static: false}) flex: ElementRef;
Также ngOnInit может быть слишком рано, попробуйте ngAfterViewInit или loaded событие самого макета.
пусть компонент: FlexboxLayout = this.flex.nativeElement;
component.addChild (стек);
Привет, @Manoj, спасибо! Я сделал то, что вы рекомендовали, вызвал метод ngAfterViewInit и изменил FlexboxLayout на ElementRef. Потому что для добавления внутрь FlexBox достаточно сделать следующее: let component: ==> FlexboxLayout = this.flex.nativeElement; component.addChild (стек);