Плагин пользовательского представления Nativescript Angular завершает работу приложения при запуске

#ios #angular #typescript #nativescript

#iOS #angular #typescript #nativescript

Вопрос:

Я пытаюсь создать плагин пользовательского представления, который экспортирует один или несколько элементов пользовательского интерфейса.

Я следовал инструкциям здесь: https://blog.nativescript.org/create-a-custom-view-plugin-marquee-label/index.html

а также здесь: https://v7.docs.nativescript.org/angular/plugins/angular-plugin

Когда я пытаюсь использовать registeredElement «AZPAgerContainer», приложение зависает или вылетает при загрузке.

az-pager-plugin/ui/pager-container.ios.ts

 import { AZPagerContainerBase } from "./pager-container.common";

declare var MarqueeLabel: any;

export class AZPagerContainer extends AZPagerContainerBase {
    createNativeView() {
        return MarqueeLabel.alloc().init();
    }

    initNativeView() {
        const nativeView = <typeof MarqueeLabel>this.nativeView;
        nativeView.fadeLength = 10;
        nativeView.scrollDuration = 8;
    }
}
 

az-pager-plugin/ui/pager-container.common.ts

 import { View } from "@nativescript/core";

export abstract class AZPagerContainerBase extends View {
}
 

az-pager-plugin/index.ios.ts
export * from "./ui/pager-container";

az-pager-plugin/angular/az-pager-plugin.module.ts

 import { NgModule } from "@angular/core";
import { registerElement } from "@nativescript/angular";

import { DIRECTIVES } from "./az-pager-plugin.directives";

import { AZPagerContainer } from "../";

@NgModule({
    declarations: [DIRECTIVES],
    exports: [DIRECTIVES],
})
export class AZPagerPluginModule { }

registerElement("AZPagerContainer", () => AZPagerContainer);
 

Затем добавляется плагин tns plugin add

И импортируется в app.module.ts

 // Framework
import { ErrorHandler, NgModule, NO_ERRORS_SCHEMA } from "@angular/core";
import { NativeScriptModule } from "@nativescript/angular";
import { HttpClient } from "@angular/common/http";
// Plugins
import { AZPagerPluginModule } from "az-pager-plugin/angular";
// Project modules
import { AppRoutingModule } from "./app-routing.module";
import { ShareModule } from "./modules/share/share.module";
// Components
import { AppComponent } from "./app.component";
import { NativescriptBottomNavigationComponent } from "./components/nativescript-bottom-navigation/nativescript-bottom-navigation.component";

@NgModule({
    declarations: [
        AppComponent,
        NativescriptBottomNavigationComponent,
    ],
    imports: [
        NativeScriptModule,
        AppRoutingModule,
        ShareModule,
        AZPagerPluginModule,
    ],
    providers: [],
    bootstrap: [AppComponent],
    schemas: [
        NO_ERRORS_SCHEMA
    ]
})
export class AppModule {}
 

Раскомментирование метки ниже предотвращает сбой, и приложение работает нормально, поэтому проблема явно связана с использованием пользовательского компонента.

 <AZPagerContainer row="1" text="Lorem Ipsum; this is a long string of text that will animate because it's longer than the width of the view."></AZPagerContainer>
<!--<Label row="1" text="Lorem Ipsum; this is a long string of text that will animate because it's longer than the width of the view."></Label>-->
 

Любая помощь приветствуется