не может переключать значение состояния с 0 на 1 после вызова функции angular - PullRequest
0 голосов
/ 16 мая 2018

Я работаю над приложением внешнего интерфейса с Angular 5 и использую api rest из внутреннего интерфейса.На самом деле, я занимаюсь разработкой платформы администрирования, и у меня есть две веб-страницы, одна для отображения списка клиентов, и у каждой есть список отзывов, а другая - для получения конкретных деталей обратной связи.

В деталях обратной связи отображаются следующие свойства: account, feedback само по себе и loyalty point, если они существуют.Есть два способа, если у обратной связи есть точка лояльности, то в деталях обратной связи будут отображаться детали со значением точки лояльности, в противном случае будет отображаться пустой ввод для этого свойства, и если ввод будет успешным, он вернется в основной список с измененным значением status отзывов от ложных до истинных.

Я использую остальные API, и для этой операции я успешно протестировал API:

API: PATCH /Feedbacks/:id 

Вот мой код:

account.service.ts:

    @Injectable()
    export class AccountService {

      constructor(private http: Http) {}

      headers: Headers = new Headers({ 'Content-Type': 'application/json' });
      options: RequestOptionsArgs = new RequestOptions({headers: this.headers});

    // API: PATCH /Feedbacks/:id
      updateStatus(feedback: Feedback) {
        let url = "http://localhost:3000/api/Feedbacks";
        return this.http.patch(url + feedback.id, feedback, this.options)
        .map(res => res.json())
        .catch(err => {
          return Observable.throw(err)
        });
      }
    }

component.html:

<form *ngIf="feedback">
        <div class="form-group">
          <label for="InputAccount">Account</label>
          <input type="text" class="form-control" id="InputAccount" value="{{feedback.account}}">
        </div>
        <div class="form-group">
          <label for="InputFeedback">Feedback</label>
          <textarea class="form-control" id="InputFeedback" rows="3" placeholder="Feedback">{{feedback.feedback}}</textarea>
        </div>
        <div class="form-group">
          <label for="InputLP">LP</label>
          <input type="text" class="form-control" id="InputLP" placeholder="LP" [(ngModel)]="account.lp" name="lp">
        </div>
        <div class="form-group" *ngIf="!edited; else showBack">
          <button (click)="addLP(account,feedback)" class="btn btn-primary" data-dismiss="alert">Add LP</button>
        </div>
</form>

component.ts:

@Component({
  selector: 'app-add',
  templateUrl: './add.component.html',
  styleUrls: ['./add.component.scss']
})
export class AddComponent implements OnInit {

  feedback = {};
  account = {};

  edited:boolean;
  status: boolean;

  constructor(private route: ActivatedRoute, private accountService: AccountService,
    private router: Router) { }

  ngOnInit() {
    this.route.paramMap
          .switchMap((params: ParamMap) => 
            this.accountService.getFeedback(+params.get('idF')))
              .subscribe(feedback => this.feedback = feedback);

    this.route.paramMap
          .switchMap((params: ParamMap) =>
            this.accountService.getAccount(params.get('idC')))
              .subscribe(account => this.account = account);    
  }

  addLP(account:Account,feedback:Feedback){
    this.accountService.updateAccount(account)
      .subscribe(res => {
        this.account = res as Account;
        console.log(res);
        if (account.lp == null){
          console.log(res);
          this.edited = false;
        } else {
          this.edited = true;
          this.accountService.updateStatus(feedback)
            .subscribe(res => { 
              feedback.status = true;
              this.feedback = res as Feedback;
              console.log(this.feedback);
            }, err => {
              console.log(err);
          });
        }
      }, err => {
        console.log(err);
    });
  }

  back() {
    this.router.navigate(['list']);
  }

}

свойство обратной связи:

  public id?: number,
  public feedback?: string,
  public account?: string,
  public status?: boolean

Если учетная запись является внешним ключом для таблицы учетных записей:

  public account?: string,
  public lp?: string

Когда я пытаюсь автоматически переключить значение состояния с false на true, журнал консоли будетвозвращение:

PATCH http://localhost:3000/api/Feedbacks2 404 (Not Found)

Любая помощь будет оценена!Мне действительно нужно решить это.Спасибо

1 Ответ

0 голосов
/ 16 мая 2018

Я изменил код в account.service.ts:

updateStatus(feedback: Feedback) {
    let url = "http://localhost:3000/api/Feedbacks";
    var body = {status: true};
    return this.http.patch(url +"/"+ feedback.id, body, this.options)
    .map(res => res.json())
    .catch(err => {
      return Observable.throw(err)
    });
  }

И это сработало!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...