前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Ionic3学习笔记(十一)实现省市区三级联动

Ionic3学习笔记(十一)实现省市区三级联动

作者头像
Theo Tsao
发布2018-09-07 16:14:42
1.8K0
发布2018-09-07 16:14:42
举报
文章被收录于专栏:Theo TsaoTheo Tsao

1. 安装 ion-multi-picker

终端运行:

代码语言:javascript
复制
npm install ion-multi-picker@2.1.0 --save

2. 导入 app.module.ts

代码语言:javascript
复制
...
import {MultiPickerModule} from 'ion-multi-picker';
...

@NgModule({
  ...
  imports: [
    ...
    MultiPickerModule,
    ...
  ]
  ...
})
...

3. 创建 provider

终端运行:

代码语言:javascript
复制
ionic g provider city-data

省市区json文件下载地址: https://raw.githubusercontent.com/raychenfj/ion-multi-picker/master/example/src/assets/chinese-cities.json

将json值赋给下面的 cities 变量即可。

city-data.ts:

代码语言:javascript
复制
import {Injectable} from '@angular/core';


@Injectable()
export class CityDataProvider {

  cities: any[];

  constructor() {
    this.cities = 上面的json(太长我就不复制粘贴了)
  }

}

4. 创建 page

终端运行:

代码语言:javascript
复制
ionic g page edit

edit.html

代码语言:javascript
复制
<ion-header>

  <ion-navbar>
    <ion-title>编辑</ion-title>

    <ion-buttons end>
      <button ion-button>保存</button>
    </ion-buttons>
  </ion-navbar>

</ion-header>


<ion-content>
  <ion-list>
    <ion-item>
      <ion-icon name="pin" item-start></ion-icon>
      <ion-label>居住地</ion-label>
      <ion-multi-picker item-content [multiPickerColumns]="cityColumns" [cancelText]="'取消'" [doneText]="'完成'"></ion-multi-picker>
    </ion-item>
  </ion-list>
</ion-content>

edit.ts

代码语言:javascript
复制
import {Component} from '@angular/core';
import {IonicPage, NavController, NavParams} from 'ionic-angular';

import {CityDataProvider} from "../../providers/city-data/city-data";


@IonicPage()
@Component({
  selector: 'page-edit',
  templateUrl: 'edit.html',
})
export class EditPage {

  cityColumns: any[];

  constructor(public navCtrl: NavController, public navParams: NavParams, public cityDataProvider: CityDataProvider) {
    this.cityColumns = this.cityDataProvider.cities;
  }

}

5. 一个坑

错误如下:

代码语言:javascript
复制
Uncaught (in promise): Error: Template parse errors:
Can't bind to 'multiPickerColumns' since it isn't a known property of 'ion-multi-picker'.
1. If 'ion-multi-picker' is an Angular component and it has 'multiPickerColumns' input, then verify that it is part of this module.
2. If 'ion-multi-picker' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.
3. To allow any property add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component.

为啥就报错了咩…明明什么都没有错…

最终我在这个 Issue 中找到了解决方案。

因为我的这个页面是子页面,所以也要将 MultiPickerModule 导入子module一下。如果是根页面的话就没有问题。

edit.module.ts:

代码语言:javascript
复制
import { NgModule } from '@angular/core';
import { IonicPageModule } from 'ionic-angular';
import { EditPage } from './edit';

import {MultiPickerModule} from 'ion-multi-picker';

@NgModule({
  declarations: [
    EditPage,
  ],
  imports: [
    MultiPickerModule,
    IonicPageModule.forChild(EditPage),
  ],
})
export class EditPageModule {}

6. 更多

GitHub - ion-multi-picker

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-11-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 安装 ion-multi-picker
  • 2. 导入 app.module.ts
  • 3. 创建 provider
  • 4. 创建 page
  • 5. 一个坑
  • 6. 更多
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档