代码之家  ›  专栏  ›  技术社区  ›  Florent Arlandis

角度4:ViewChild()意外刷新应用程序

  •  1
  • Florent Arlandis  · 技术社区  · 7 年前

    我试图通过@ViewChild()获取输入字段的值。然而,尽管这种方法似乎有效,但它触发了对应用程序的意外刷新:

    -点击触发事件的按钮后,应用程序立即刷新

    模板:

    <input type="text" id="name" class="form-control" #nameInput>
    <button class="btn btn-success" type="submit" (click)="addShop()">Add</button>
    <p>{{shopName}}</p>
    

    组成部分ts:

    import { Component, OnInit, ViewChild, ElementRef } from '@angular/core';
    
    @Component({
      selector: 'app-shopping-edit',
      templateUrl: './shopping-edit.component.html',
      styleUrls: ['./shopping-edit.component.css']
    })
    export class ShoppingEditComponent implements OnInit {
    @ViewChild('nameInput') shopName:ElementRef;
    @ViewChild('amountInput') shopAmount:ElementRef;
    
    coucou:string;
    
    
    addShop(){
        this.shopName = this.shopName.nativeElement.value;
    }
    
      constructor() { }
    
      ngOnInit() {
      }
    }
    
    2 回复  |  直到 7 年前
        1
  •  2
  •   FAISAL    7 年前

    删除按钮中的type=“submit”,将其替换为type=“button”

    更改以下行:

    <button class="btn btn-success" type="submit" (click)="addShop()">Add</button>
    

    收件人:

    <button class="btn btn-success" type="button" (click)="addShop()">Add</button>
    

    浏览器认为您正在提交表单,这就是它刷新页面的原因

        2
  •  1
  •   Pankaj Parkar    7 年前

    form ,在表单上 submit 它试图击中的事件 action 类型 ,刷新页面。要停止这种行为,您可以更改按钮 type button 提交 类型)。

    <button class="btn btn-success" type="button" (click)="addShop()">Add</button>
    

    (ngSumbit)="submit()" 上的事件 类型 提交 ngSubmit 事件您可以从上指定的函数进行ajax调用 ngSubmit提交

    <form (ngSubmit)="addShop()" #heroForm="ngForm">
      <input type="text" id="name" class="form-control">
      <button class="btn btn-success" type="submit">Add</button>
      <p>{{shopName}}</p> 
    </form>