Я работаю над приложением внешнего интерфейса с 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)
Любая помощь будет оценена!Мне действительно нужно решить это.Спасибо