下拉列表不是有效的视图实例Angular + Nativescript

如何解决下拉列表不是有效的视图实例Angular + Nativescript

我正在尝试通过使用nativescript下拉插件在我的nativescript角度应用程序中创建一个下拉列表。运行应用程序时出现错误“ Dropdown(1)不是有效的视图实例”

从“ nativescript-drop-down / angular”导入{DropDownModule};

.html文件

 <GridLayout rows="auto,auto,*"
                                        columns="auto,*" (tap)="openVersionDropdown()"    >
    
                                <DropDown  #dd  backgroundColor="red" [items]="itemsVersion"
                                          [selectedIndex]="selectedVersionIndex" (opened)="onopen()"
                                           (closed)="onclose()" (selectedIndexChange)="onVersionChange($event)" row="0" colSpan="2"></DropDown>
    
                                <Label text="Selected Index:"
                                       row="1"
                                       col="0"
                                       fontSize="18"
                                       verticalAlignment="bottom"></Label>
                                <Label [text]="selectedVersionIndex"
                                           row="1"
                                           col="1"></Label>

ts文件

import {DropDown,SelectedIndexChangedEventData,ValueList} from "nativescript-drop-down";
    .... 
public itemsVersion: ValueList<string>;
selectedVersionIndex : number;

     public onopen() {
            console.log("Drop Down opened.");
        }
    
        public onclose() {
            console.log("Drop Down closed.");
        }
    
        public changeStyles() {
            this.cssClass = "changed-styles";
        }
    
    
        openVersionDropdown(){
            let dropdown = <DropDown>this.page.getViewById('ddVersion');
            dropdown.open();
        }
        onVersionChange(args: SelectedIndexChangedEventData){
            console.log(`Drop Down selected index changed from ${args.oldIndex} to ${args.newIndex}. `);
        }
        ngOnInit(): void {
            this.itemsVersion = new ValueList<string>();
            for (let loop = 0; loop < 5; loop++) {
                this.itemsVersion.push({
                    value: `${loop}`,display:  "Item "+ loop,});
            }
     }

解决方法

尝试此操作以在应用程序中添加下拉菜单: 1.demo.module.ts:-

 import { NgModule,NO_ERRORS_SCHEMA } from "@angular/core";
 import { DemoComponent } from "./demo.component";
 import { NativeScriptCommonModule } from "nativescript-angular/common";
 import { NativeScriptFormsModule } from "nativescript-angular/forms";
 import { DropDownModule } from "nativescript-drop-down/angular";

 @NgModule({
  imports: [
    NativeScriptCommonModule,NativeScriptFormsModule,DropDownModule,],declarations: [
    DemoComponent
  ],providers: [
  ],schemas: [
    NO_ERRORS_SCHEMA
  ]
 })
 export class DemoModule { }

2.demo.component.html:-

<GridLayout row="0" rows="auto" col="0" columns="*,auto"
                                        class="demo-container" ios:style="padding:8">
                                        <DropDown row="0" col="0" #ddlInitial [items]="initialList"
                                            [selectedIndex]="initialSelectedIndex" ios:style="padding:8"
                                            (selectedIndexChanged)="onInitialChange($event)"
                                            hint="Initial"
                                            class="eloha-font-semibold demo-drop-input">
                                        </DropDown>
                                        <Label row="0" col="1" text="&#xf13a;" class="fa set-icon-color"
                                            [ngClass]="{'font-size-lg': !isTablet,'font-size-lg-tablet': isTablet}"
                                            verticalAlignment="middle" android:style="padding-right: 10"></Label>
                                    </GridLayout>

3.demo.component.ts:-

import { Component,OnInit,NgZone,ChangeDetectorRef,ChangeDetectionStrategy,ViewChild,AfterViewInit,ElementRef } from "@angular/core";
import * as frameModule from "tns-core-modules/ui/frame";
import { isIOS,device } from "tns-core-modules/platform";
import * as  orientation from 'nativescript-orientation';
import { RouterExtensions } from "nativescript-angular/router";
import * as dialogs from "tns-core-modules/ui/dialogs";
import { DeviceType } from "tns-core-modules/ui/enums";
import { ActivatedRoute } from "@angular/router";
import { SelectedIndexChangedEventData,ValueList } from "nativescript-drop-down";
import { DatePipe } from "@angular/common";

@Component({
selector: "Demo",moduleId: module.id,templateUrl: "./demo.component.html",styleUrls: ['./demo.component.css'],providers: [DatePipe]
})
export class AddFamilyComponent implements OnInit {

public isTablet: boolean = false;

//Value 
public initialList: ValueList<string>;

//Get dropDown selected index
public initialSelectedIndex = 0;

constructor(private zone: NgZone,private _ref: ChangeDetectorRef,private route: ActivatedRoute,private datePipe: DatePipe,private routerExtensions: RouterExtensions) {
    this.isIos = isIOS;
    this.pageIndex = "2";
}

ngOnInit(): void {
    orientation.setOrientation("portrait");
    orientation.disableRotation();

}

ngAfterViewInit(): void {
    if (isIOS) {
        const controller = frameModule.topmost().ios.controller;
        // get the view controller navigation item
        const navigationItem = controller.visibleViewController.navigationItem;
        // hide back button
        navigationItem.setHidesBackButtonAnimated(true,false);
    }
}

//Add initial value
getInitialValueList() {
    let initialSource = new ValueList<string>([
        { value: "Mr",display: "Mr" },{ value: "Mrs",display: "Mrs" },{ value: "Miss",display: "Miss" }
    ]);
    this.initialList = initialSource;
}

//Change initial selection value
onInitialChange(args: SelectedIndexChangedEventData) {
    let initialValue = this.initialList.getValue(args.newIndex);
}

}

4。 demo.component.css:-

.demo-drop-input {
 font-size: 17;
 padding-top: 5;
 padding-left: 5;
 padding-right: 0;
 padding-bottom: 5;
 border-radius: 30;
 background: #fffff;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-