【发布时间】:2018-05-16 10:19:25
【问题描述】:
我正在使用 Angular 5 开发前端应用程序,并使用后端的 rest api。实际上,我正在开发管理平台,我有两个网页,一个用于显示客户列表,每个都有反馈列表,另一个让您了解具体的反馈详细信息。
反馈详细信息显示以下属性:account、feedback 本身和loyalty point(如果存在)。
有两种方法,如果反馈有其忠诚度积分,则反馈详细信息将显示具有忠诚度积分值的详细信息,否则将显示该属性的空输入,如果输入成功,它将返回主列表,并更改值 @ 987654324@ 的反馈从假到真。
我正在使用 rest 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)
任何帮助将不胜感激!我真的需要解决它。谢谢
【问题讨论】: