问题
I am trying to do a check if a text input is empty or not in angular 4. I am not using forms for this. It's just an input field. When I execute the addLocaton function in the button below the check needs to happen.
my input field
<ion-input type="text" placeholder="Enter a Town, Province or City" name="newPlace" [(ngModel)]="newPlace" id="empty"></ion-input>
<button ion-button block type="submit" (click)="addLocation()">ADD AND SAVE MORE LOCATIONS</button>
ts file
addLocation(){
if( document.getElementById('empty').value === '' ){
alert('empty');
}
}
回答1:
The proper way
change type="button" instead of type="submit" as the suggestion from @edkeveked
<button ion-button block type="button" (click)="addLocation(newPlace)">ADD AND SAVE MORE LOCATIONS</button>
But you could do this way for passing the model object via method instead of using plain JavaScript code
addLocation(newPlace){
if(newPlace === '' || newPlace === undefined ){
alert('invalid');
}
}
or use the two way binding
(click)="addLocation()"
and ts could be
addLocation(){
if(this.newPlace === '' || this.newPlace === undefined ){
alert('invalid');
}
}
回答2:
Use type="button" instead of type="submit"
With the type
buttonthe button has no default behavior. It can have client-side scripts associated with the element's events, which are triggered when the events occur whereas with the typesubmitit tries to make a form submit action. To catch that action in angular, you need to use the event binding to(ngSubmit).
Since you're not using form, to handle your click action, here is the way to go.
<button ion-button block type="button" (click)="addLocation()">ADD AND SAVE MORE LOCATIONS</button>
来源:https://stackoverflow.com/questions/49934280/angular-4-click-button-function-is-not-fired