角度页面参数被附加到safari中的url

时间:2018-05-15 22:37:40

标签: angular material-design angular-material2 angular-routing angular6

我有一个物质角度应用程序。第一页是登录页面,成功登录后会被主页取代。在safari的情况下,我看到的是用户名密码在登录后附加到网址。我不指望这种情况会发生,并且在Chrome中它不会发生。

“登录”页面如下所示:

  <form (ngSubmit)="doLogin()">
              <div><input matInput placeholder=" User ID" name="userId" [(ngModel)]="userId" ></div>
              <div><input matInput type="password" name="password" placeholder=" Password" [(ngModel)]="password"></div>

              <div><button mat-raised-button  (click)="doLogin()">Sign In</button></div>
            </form>

login.ts

     userId:string
      password:string

     doLogin(){
 this.errorMessage = ''
    if(this.userId == undefined  || this.userId == ''){
      this.errorMessage = 'Authentication Failed'
      return
    }

    var user:UserModel = this.dataStore.findUser(this.userId.trim().toLowerCase())
    if(user == undefined || (user.password != this.password)){
       this.errorMessage = 'Authentication Failed'
      return
    }

    this.core.currentUser = user.userId
          this.router.navigate(['homepage'])
      }

app.routing.ts

const appRoutes: Routes = [ 
    {
        path: '',
        component: LoginPageComponent
    },
     {
        path: 'homepage',
        component: DynamicHomeComponent
    }

];

export const routing: ModuleWithProviders = RouterModule.forRoot(appRoutes);

登录时,如果是徒步旅行,网址会变为下方: https://myurl/homepage?userid=xxx&password=yyy

1 个答案:

答案 0 :(得分:2)

问题是您有<form>标记,但未正确实施<form>。如果要使用表单标记,请在提交按钮上使用<button type="submit"></button>语法。在这里,您有一个具有(click)方法的按钮,并且您在表单标记上有submit方法。由于您的按钮没有input并且有点击事件,因此正在运行默认提交,即带有与表单type="submit"对应的url参数的get请求。

tl; dr =&gt;使用html表单的约定或只使用click事件,但不能同时使用两者。