Angular用の都道府県マスタを作成

Angular用の都道府県マスタです。ご自由にお使いください。
2019.04.17

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

Angular用の都道府県マスタを作成したので公開しておこうと思います。

環境

Angular CLI: 6.1.3
Node: 8.11.3
OS: darwin x64
Angular: 6.1.2
... common, compiler, compiler-cli, core, forms, http
... language-service, platform-browser, platform-browser-dynamic
... router

Package Version
-----------------------------------------------------------
@angular-devkit/architect 0.7.3
@angular-devkit/build-angular 0.7.3
@angular-devkit/build-optimizer 0.7.3
@angular-devkit/build-webpack 0.7.3
@angular-devkit/core 0.7.3
@angular-devkit/schematics 0.7.3
@angular/animations 6.1.0
@angular/cdk 6.4.3
@angular/cli 6.1.3
@angular/material 6.4.3
@ngtools/webpack 6.1.3
@schematics/angular 0.7.3
@schematics/update 0.7.3
rxjs 6.2.2
typescript 2.7.2
webpack 4.9.2

マスタを作成

総務省が定めている都道府県コードの通りにマスタを作成しました。

value に都道府県コード、 viewValue に実際に画面に表示される都道府県名を定義しておきます。

src/app/util/prefectures.ts

export interface State {
value: number;
viewValue: string;
}

export const SelectPrefectures = {
states: [
{value: '01', viewValue: '北海道'},
{value: '02', viewValue: '青森県'},
{value: '03', viewValue: '岩手県'},
{value: '04', viewValue: '宮城県'},
{value: '05', viewValue: '秋田県'},
{value: '06', viewValue: '山形県'},
{value: '07', viewValue: '福島県'},
{value: '08', viewValue: '茨城県'},
{value: '09', viewValue: '栃木県'},
{value: '10', viewValue: '群馬県'},
{value: '11', viewValue: '埼玉県'},
{value: '12', viewValue: '千葉県'},
{value: '13', viewValue: '東京都'},
{value: '14', viewValue: '神奈川県'},
{value: '15', viewValue: '新潟県'},
{value: '16', viewValue: '富山県'},
{value: '17', viewValue: '石川県'},
{value: '18', viewValue: '福井県'},
{value: '19', viewValue: '山梨県'},
{value: '20', viewValue: '長野県'},
{value: '21', viewValue: '岐阜県'},
{value: '22', viewValue: '静岡県'},
{value: '23', viewValue: '愛知県'},
{value: '24', viewValue: '三重県'},
{value: '25', viewValue: '滋賀県'},
{value: '26', viewValue: '京都府'},
{value: '27', viewValue: '大阪府'},
{value: '28', viewValue: '兵庫県'},
{value: '29', viewValue: '奈良県'},
{value: '30', viewValue: '和歌山県'},
{value: '31', viewValue: '鳥取県'},
{value: '32', viewValue: '島根県'},
{value: '33', viewValue: '岡山県'},
{value: '34', viewValue: '広島県'},
{value: '35', viewValue: '山口県'},
{value: '36', viewValue: '徳島県'},
{value: '37', viewValue: '香川県'},
{value: '38', viewValue: '愛媛県'},
{value: '39', viewValue: '高知県'},
{value: '40', viewValue: '福岡県'},
{value: '41', viewValue: '佐賀県'},
{value: '42', viewValue: '長崎県'},
{value: '43', viewValue: '熊本県'},
{value: '44', viewValue: '大分県'},
{value: '45', viewValue: '宮崎県'},
{value: '46', viewValue: '鹿児島県'},
{value: '47', viewValue: '沖縄県'}
]
};

入力フォームを作成(画面)

HTML

src/app/component/home-address.component.html

<br /><!-- address form group -->

<form>住所入力フォーム
<!-- postal code -->

<input id="update-postal_code" maxlength="7" required="" type="text" placeholder="郵便番号" />
{{postalCode.value.length}} / 7
※半角数字のみ入力できます

<!-- state -->

都道府県

{{state.viewValue}}

<!-- city -->

<input id="update-city" required="" type="text" placeholder="市区町村" />

<!-- block -->

<input id="update-block" required="" type="text" placeholder="番地" />
※半角数字と-(ハイフン)のみ入力できます

<!-- etc -->

<input id="update-address_etc" type="text" placeholder="マンション名・部屋番号" />

</form>

Typescript

src/app/component/home-address.component.ts

import { Component, OnInit } from '@angular/core';
import {
FormBuilder,
FormGroup,
Validators,
FormControl,
FormGroupDirective,
NgForm
} from '@angular/forms';
import { SelectPrefectures } from './../../util/prefectures'; // 上で作成した都道府県マスタ

@Component({
selector: 'app-home-address',
templateUrl: './home-address.component.html',
styleUrls: ['./home-address.component.css']
})
export class ChangeUserInfoComponent implements OnInit {
addressForm: FormGroup;

constructor(
private fb: FormBuilder,
private router: Router
) {}

ngOnInit() {
this.initForm();
}

// 入力フォーム初期化
initForm() {
this.addressForm = this.fb.group({
postal_code: new FormControl(
'',
Validators.compose([
Validators.required,
Validators.minLength(7)
])
),
state: ['', Validators.required],
city: ['', Validators.required],
block: ['', Validators.required],
address_etc: ['']
});
}
}