Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Angular Material component that allow users to select a country or nationality with an autocomplete feature

License

NotificationsYou must be signed in to change notification settings

angular-material-extensions/select-country

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

angular-material-extensions's logo

@angular-material-extensions/select-country - Angular Material component that allow users to select a country or nationality with an autocomplete feature

npm versionnpm demodocs: typedocJoin the chat at https://gitter.im/angular-material-extensions/LobbyBuild StatuscodecovGreenkeeper Badgelicense

@angular-material-extensions/select-country demonstration

@angular-material-extensions/select-country demonstration

Built by and for developers ❤️

Do you have any question or suggestion ? Please do not hesitate to contact us!Alternatively, provide a PR | open an appropriate issuehere

If you like this project, supportangular-material-extensionsby starring ⭐ and sharing it 📢

Table of Contents

View all the directives and components in action athttps://angular-material-extensions.github.io/select-country

  • <mat-select-country> used to display the main component

  • Angular developed and tested with17.x

1. Install viang add. (Recommended)

If Angular Material Design is not setup, just runng add @angular/materiallearn more

Now add the library via theangular schematics

ng add @angular-material-extensions/select-country

2. Install vianpm. (Alternative)

Install peer dependencies

npm i svg-country-flags -s

then update yourangular.json like below (svg-country-flags)

"assets": ["src/favicon.ico","src/assets",              {"glob":"**/*","input":"./node_modules/svg-country-flags/svg","output":"src/assets/svg-country-flags/svg"              }            ],

Now install@angular-material-extensions/select-country via:

npm install --save @angular-material-extensions/select-country

Import the library

If you installed the library via angular schematics, you can skip this step

Once installed you need to import the main module and theHttpClientModule:

import{MatSelectCountryModule}from"@angular-material-extensions/select-country";
import{MatSelectCountryModule}from'@angular-material-extensions/select-country';import{HttpClientModule}from'@angular/common/http';@NgModule({declarations:[AppComponent, ...],imports:[MatSelectCountryModule.forRoot('de'),// you can use 'br' | 'de' | 'en' | 'es' | 'fr' | 'hr' | 'hu' | 'it' | 'nl' | 'pt' --> MatSelectCountrySupportedLanguagesHttpClientModule, ...],bootstrap:[AppComponent]})exportclassAppModule{}

in other modules

import{MatSelectCountryModule}from'@angular-material-extensions/select-country';import{HttpClientModule}from'@angular/common/http';@NgModule({declarations:[AppComponent, ...],imports:[MatSelectCountryModule,HttpClientModule, ...],bootstrap:[AppComponent]})exportclassAppModule{}

Other modules in your application like for lazy loading importMatSelectCountryModule into your feature module:

<mat-select-country> used to display the main component -see the demo examples

optionbindtypedefaultdescription
valueInput()Country-the selected country (pass an empty Country object with alpha2 code populated to do alpha2 lookup)
appearanceInput()MatFormFieldAppearance-Possible appearance styles format-form-field ('legacy', 'standard', 'fill' or 'outline')
countriesInput()Country[]All countries stored in the libCountries that should be loaded - predefine the countries that you only need!
labelInput()boolean-mat-form-field label's text
itemsLoadSizeInput()number-the number of countries that should be fetched --> improves the performance
placeHolderInput()boolean-input placeholder text
disabledInput()boolean-Whether the component is disabled
loadingInput()boolean-Whether the component is loading
nullableInput()boolean-Whether the component is able to emitnull
readonlyInput()boolean-Whether the component is read only
tabIndexInput()number | string-Whether the component can be focused, and where it participates in sequential keyboard navigation
showCallingCodeInput()booleanfalseWhether the component to show the country's calling code in the label and selection
classInput()string-Class attribute apply style to input text or validation ignore (optional)
languageInput()string-the language, if not specified MatSelectCountryModule.forRoot('XX') will be used (optional)
nameInput()string'country'the attribute name of the input element
autocompleteInput()string-the attribute autocomplete of the input element, to avoid suggestion of some browsers put 'no'
onCountrySelectedOutput()EventEmitter<Country>-emits the selected country as object (see the interface below)
interfaceCountry{name:string;alpha2Code:string;alpha3Code:string;numericCode:string;callingCode:string;}

add the<mat-select-country> element to your template:

<mat-select-country></mat-select-country>

@angular-material-extensions/select-country demonstration

@angular-material-extensions/select-country demonstration

@angular-material-extensions/select-country demonstration

Use the library with reactive forms

option 1 with Reactive Forms

<mat-select-countryappearance="outline"label="Country"[formControl]="countryFormControl"(onCountrySelected)="onCountrySelected($event)"></mat-select-country>

option 2 with Reactive Forms

<form[formGroup]="countryFormGroup"><divfxLayoutAlign="center"><mat-select-countryappearance="outline"label="Country"class="className"formControlName="country"(onCountrySelected)="onCountrySelected($event)"></mat-select-country></div></form>
import{Component,OnInit}from'@angular/core';import{FormControl}from'@angular/forms';import{Country}from'@angular-material-extensions/select-country';@Component({selector:'app-root',templateUrl:'./app.component.html',styleUrls:['./app.component.scss']})exportclassAppComponentimplementsOnInit{title='select-country';countryFormControl=newFormControl();countryFormGroup:FormGroup;constructor(privateformBuilder:FormBuilder){angulartics2GoogleAnalytics.startTracking();}ngOnInit():void{this.countryFormGroup=this.formBuilder.group({country:[]});this.countryFormGroup.get('country').valueChanges.subscribe(country=>console.log('this.countryFormGroup.get("country").valueChanges',country));this.countryFormControl.valueChanges.subscribe(country=>console.log('this.countryFormControl.valueChanges',country));}onCountrySelected($event:Country){console.log($event);}}

Predefine your countries to load

<mat-select-countryappearance="outline"label="Country"[countries]="predefinedCountries"(onCountrySelected)="onCountrySelected($event)"></mat-select-country>
import{Country}from'@angular-material-extensions/select-country';predefinedCountries:Country[]=[{name:'Germany',alpha2Code:'DE',alpha3Code:'DEU',numericCode:'276',callingCode:'+49'},{name:'Greece',alpha2Code:'GR',alpha3Code:'GRC',numericCode:'300',callingCode:'+30'},{name:'France',alpha2Code:'FR',alpha3Code:'FRA',numericCode:'250',callingCode:'+33'},{name:'Belgium',alpha2Code:'BE',alpha3Code:'BEL',numericCode:'056',callingCode:'+32'}];

Result:

@angular-material-extensions/select-country demonstration

Improve performance - use theitemsLoadSize property

<mat-select-countryappearance="outline"label="Country"[itemsLoadSize]="5"></mat-select-country>

only 5 countries will fetched!

Change language dynamically - use thelanguage property

<mat-select-countryappearance="outline"label="Country"[language]="languageSelected"(onCountrySelected)="onCountrySelected($event)"></mat-select-country>

Build the library

$ npm run build:lib

Serve the demo app

$ npm start

Other Angular Libraries


nahaus.de - Digital and Automated Real Estate Management

To put your project here, please drop an appropriate PR


Built by and for developers ❤️ we will help you 👊


jetbrains logo

This project is supported byjetbrains with 1 ALL PRODUCTS PACK OS LICENSE incl.webstorm


Copyright (c) 2020-2024Anthony Nahas. Licensed under the MIT License (MIT)

angular-material-extensions's logo

About

Angular Material component that allow users to select a country or nationality with an autocomplete feature

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Contributors14


[8]ページ先頭

©2009-2025 Movatter.jp