Angular 添加项目后刷新项目列表
您好,我正在angular上开发一个应用平台,我有一个部分可以让应聘者填写他们的专业经验! 问题是,我无法在添加体验后更新体验列表 体验.组件.tsAngular 添加项目后刷新项目列表,angular,Angular,您好,我正在angular上开发一个应用平台,我有一个部分可以让应聘者填写他们的专业经验! 问题是,我无法在添加体验后更新体验列表 体验.组件.ts @Output() newExperience: EventEmitter<any> = new EventEmitter<any>(); ... addNewExperience(){ .... this.newExperience.emit(this.addForm.value); // emit experi
@Output() newExperience: EventEmitter<any> = new EventEmitter<any>();
...
addNewExperience(){
....
this.newExperience.emit(this.addForm.value); // emit experience
}
handleNewExperience(experience: any){ // This should be typed parameter
this.experience.push(experience);
}
<add-experience (newExperience)="handleNewExperience($event)"></add-experience>
导出类体验组件在NIT上实现{
经验:数组=[];
建造师(
私人体验服务:体验服务,
专用modalService:NgbModal,
私人场所:场所,
) { }
ngOnInit():void{
此.experienceService.getExperiences().subscribe(
result=>this.experience=result
)
}
/**
*添加新体验
*@param addModel
*/
addExperience(addModel:Experience){
const add=this.modalService.open(AddExperienceComponent,{centered:true});
add.componentInstance.selectedExperience=addModel;
}
}
添加experience.component.ts
@Output() newExperience: EventEmitter<any> = new EventEmitter<any>();
...
addNewExperience(){
....
this.newExperience.emit(this.addForm.value); // emit experience
}
handleNewExperience(experience: any){ // This should be typed parameter
this.experience.push(experience);
}
<add-experience (newExperience)="handleNewExperience($event)"></add-experience>
导出类AddExperienceComponent实现OnInit{
addForm:FormGroup;
提交=错误;
经验
新体验:体验={
帖子:'',
企业:'',
维尔:“,
日期:'',
dateFin:“”,
详细信息:“”
}
建造师(
公共模式:NgbActiveModal,
私人体验服务:体验服务,
私有formBuilder:formBuilder,
) { }
ngOnInit():void{
this.setExperienceForm()
}
/**
*添加新体验
*/
addNewExperience(){
this.experienceService.addExperience(this.addForm.value)
.订阅(
res=>{
如果(res){
喷火({
标题:“伟大”,
图标:“成功”,
html:
“您的经验已添加!”,
confirmButtonAriaLabel:“Ok”,
});
this.submitted=true;
this.modal.close()
}
},
err=>Swal.fire({
标题:“哎呀!”,
图标:“错误”,
html:
'结束日期必须大于开始日期',
confirmButtonAriaLabel:“Ok”,
}),
)
}
获取addExperienceData(){
返回this.addForm.controls;
}
私有setExperienceForm(){
this.addForm=this.formBuilder.group({
poste:[this.newExperience.poste,Validators.required],
企业:[this.newExperience.enterprise,Validators.required],
VILE:[this.newExperience.ville,Validators.required],
DateDunch:[this.newExperience.DateDunch,Validators.required],
dateFin:[this.newExperience.dateFin,Validators.required],
详细信息:[this.newExperience.details,Validators.required]
});
}
}
为了澄清,添加体验组件被用作模式
下面是我的页面的外观:
你知道怎么做吗
谢谢:)
解决方案:
在寻找解决方案一天后,我在我的体验组件中编辑了函数addExperience(),现在看起来是这样的:
addExperience(experienceModel : Experience){
const ref = this.modalService.open(AddExperienceComponent, { centered: true });
ref.componentInstance.selectedExperience = experienceModel;
ref.result.then((yes) => {
console.log(yes);
this.setExperienceList();
},
(cancel) => {
console.log(cancel);
})
}
我创建了一个新函数,其中包含ngOnInit()中的代码,如下所示:
ngOnInit(): void {
this.setExperienceList();
}
/**
* Get experiences
*/
private setExperienceList() {
this.experienceService.getExperiences().subscribe(x => {
this.experience = x;
})
谢谢大家的帮助:)试试这样,我有类似的工作流程,我做到了。在
Experience.component.ts
中,您从experienceService
订阅getExperiences()
,我相信这会从API返回JSON或其他内容。在下面,您可以收听对JSON的任何更改,下面是一个可能适合您的简单代码
Experience.component.ts
内部构造函数或ngOnInit
添加此代码
this.experienceService.listen().subscribe((experiences: any) => {
this.getListExperiences();
});
然后在构造函数外部添加此代码
getListExperiences(){
this.experienceService.getExperiences().subscribe(
result => this.experience = result
)}
在experienceService
中,您可以使用行为主体和可观察对象
private _listeners = new Subject<any>();
listen(): Observable<any> {
return this._listeners.asObservable();
}
private\u监听器=新主题();
listen():可观察的{
返回此项。_listeners.asObservable();
}
试试这样,我有类似的工作流程,我做到了。在Experience.component.ts
中,您从experienceService
订阅getExperiences()
,我相信这会从API返回JSON或其他内容。在下面,您可以收听对JSON的任何更改,下面是一个可能适合您的简单代码
Experience.component.ts
内部构造函数或ngOnInit
添加此代码
this.experienceService.listen().subscribe((experiences: any) => {
this.getListExperiences();
});
然后在构造函数外部添加此代码
getListExperiences(){
this.experienceService.getExperiences().subscribe(
result => this.experience = result
)}
在experienceService
中,您可以使用行为主体和可观察对象
private _listeners = new Subject<any>();
listen(): Observable<any> {
return this._listeners.asObservable();
}
private\u监听器=新主题();
listen():可观察的{
返回此项。_listeners.asObservable();
}
您可以将添加的体验
发射到父组件。在添加experience.component.ts中,您应该添加一个EventEmitter
。在EventEmitter
上,您的父组件(Experience.component.ts)可以“订阅”并获得添加的体验
我的密码:
添加experience.component.ts
@Output() newExperience: EventEmitter<any> = new EventEmitter<any>();
...
addNewExperience(){
....
this.newExperience.emit(this.addForm.value); // emit experience
}
handleNewExperience(experience: any){ // This should be typed parameter
this.experience.push(experience);
}
<add-experience (newExperience)="handleNewExperience($event)"></add-experience>
当然,您需要在发射器上“订阅”
体验.组件.ts
@Output() newExperience: EventEmitter<any> = new EventEmitter<any>();
...
addNewExperience(){
....
this.newExperience.emit(this.addForm.value); // emit experience
}
handleNewExperience(experience: any){ // This should be typed parameter
this.experience.push(experience);
}
<add-experience (newExperience)="handleNewExperience($event)"></add-experience>
您可以向父组件发出添加的体验。在添加experience.component.ts中,您应该添加一个EventEmitter
。在EventEmitter
上,您的父组件(Experience.component.ts)可以“订阅”并获得添加的体验
我的密码:
添加experience.component.ts
@Output() newExperience: EventEmitter<any> = new EventEmitter<any>();
...
addNewExperience(){
....
this.newExperience.emit(this.addForm.value); // emit experience
}
handleNewExperience(experience: any){ // This should be typed parameter
this.experience.push(experience);
}
<add-experience (newExperience)="handleNewExperience($event)"></add-experience>
当然,您需要在发射器上“订阅”
体验.组件.ts
@Output() newExperience: EventEmitter<any> = new EventEmitter<any>();
...
addNewExperience(){
....
this.newExperience.emit(this.addForm.value); // emit experience
}
handleNewExperience(experience: any){ // This should be typed parameter
this.experience.push(experience);
}
<add-experience (newExperience)="handleNewExperience($event)"></add-experience>
所以在我检查了您的代码之后,您正在使用Ngbmodal
。关于那个解决方案,我的想法不好
在添加新体验组件中,您需要使用创建的体验解除您的模式。在我的示例中,我将表单值发送给了另一个组件,但是您应该创建一个experience
对象
addNewExperience(experience) {
// Create the object
this.newExperience.company = this.addForm.get('company').value;
this.newExperience.poste = this.addForm.get('poste').value;
this.newExperience.city = this.addForm.get('city').value;
this.newExperience.startDate = this.addForm.get('startDate').value;
this.newExperience.endDate = this.addForm.get('endDate').value;
this.newExperience.details = this.addForm.get('details').value;
this.modal.close(this.newExperience);
}
在<