Я не могу сделать запрос с помощью FormGroup Angular 6 - PullRequest
1 голос
/ 31 октября 2019

Я новичок в angular, я не могу сделать запрос с помощью formGroup. Тело отправляется для всех полей, которые у меня есть, однако есть ошибка 400 (неверный запрос) из-за следующей ошибки: {"status": "error", "errors": {"message": "Secondоперация началась в этом контексте до завершения предыдущей операции. Обычно это вызвано тем, что разные потоки используют один и тот же экземпляр DbContext, однако члены экземпляра не гарантируют потокобезопасность. Это также может быть вызвано оценкой вложенного запроса на клиенте. , если это так, перепишите запрос, избегая вложенных вызовов. "}}, я вроде понимаю, в чем заключается ошибка, но я не понимаю, что не так с моим кодом. заранее спасибо

register.model.ts

export class User{
    FirstName: string;
    LastName: string;
    UserName: string;
    Email: string;
    Password: string;
}

register.service.ts

RegisterUser(user: User){
return this.http.post('url', user);

}

register.component.html

<form [formGroup]="registerForm" (ngSubmit)="onSubmit()">

  <div class="form-group row">
    <label class="col-sm-3 col-form-label">First Name:</label>
    <div class="col-sm-3">
      <input type="text" formControlName="FirstName" class="form-control"
        placeholder="First Name" ngModel>
    </div>
  </div>
  <div class="form-group row">
    <label class="col-sm-3 col-form-label">Last Name:</label>
    <div class="col-sm-3">
      <input type="text" formControlName="LastName" class="form-control"
        id="LastName" placeholder="LastName" ngModel>
    </div>
  </div>
  <div class="form-group row">
    <label for="UserName" class="col-sm-3 col-form-label">Username:</label>
    <div class="col-sm-3">
      <input type="text" formControlName="UserName" class="form-control"
        placeholder="User Name" ngModel>
    </div>
  </div>
  <div class="form-group row">
    <label for="Email" class="col-sm-3 col-form-label">Email:</label>
    <div class="col-sm-3">
      <input type="email" formControlName="Email" class="form-control"
        placeholder="example@example.com" ngModel>
    </div>
  </div>

  <div class="form-group row">
    <label for="password" class="col-sm-3 col-form-label">Password:</label>
    <div class="col-sm-3">
      <input type="password" formControlName="Password"  class="form-control"
        placeholder="*********" ngModel>
    </div>
  </div>

  <br>

  <p class="text-center">Already have an account? <span>
      <button (click)="goToSignIn();" class="unstyled-button">Sign In.</button>
    </span></p>

  <button type="submit" class="button button4">Sign Up</button>
</form>

register.component.ts

export class RegisterComponent implements OnInit {

user: User;
registerForm: FormGroup;

constructor(private router: Router, private userService: RegisterService, private toastr: 
          ToastrService, private fb: FormBuilder) { }

ngOnInit() {
  this.registerForm = this.fb.group({
    FirstName: ['', Validators.required],
    LastName: ['', Validators.required],
    UserName: ['', Validators.required],
    Email: ['', Validators.required],
    Password: ['', Validators.required],
  })
}


onSubmit(){
  return this.userService.RegisterUser(this.registerForm.value).subscribe((data:any) => {
    this.toastr.success('User Registered Successfully');
  }, error => {
    this.toastr.error('Registeration Failed');
  })
}

}

Ответы [ 2 ]

0 голосов
/ 31 октября 2019

Это не ошибка JavaScript, с которой у вас возникла проблема. Это ошибка, исходящая из Entity Framework.

Ваш DBContext используется двумя потоками одновременно. Возможно, он используется двумя потоками в одном и том же запросе.

Убедитесь, что ваш DBContext по какой-то причине не объявлен статическим.

Вам необходимо предоставить свой API-код, чтобы мы моглиотладить вашу проблему.

0 голосов
/ 31 октября 2019

Попробуйте так:

registerUser(user) : Observable<any> {
return this.http.post<any>('url', JSON.stringify(user), this.httpOptions).pipe(
    tap((user) => console.log(`user sent : ${JSON.stringify(user)}`)),
    catchError(this.handleError)
  );

};

httpOptions выглядит так:

httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json'
})

};

для ошибки перехвата:

handleError(error) {
let errorMessage = '';
if(error.error instanceof ErrorEvent) {
// Get client-side error
errorMessage = error.error.message;
} else {
// Get server-side error
errorMessage = `Error Code: ${error.status}\nMessage: ${error.message}`;
}
window.alert(errorMessage);
return throwError(errorMessage);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...