我有一个组件,该组件的ID我想传递给该组件的控制器。这是扩展FaqController的类。这是faq.ts
export class FaqPage extends FaqController {
constructor(
injector: Injector,
public viewController: ViewController,
public navCtrl: NavController,
public navParams: NavParams
)
{
super(injector);
console.log(this.navParams.get('id'))
}
}
我有一个处理弹性搜索数据的控制器,我的service
中有一个方法,该方法需要id
中的faq.ts
来完成正确的查询:
faq.controller.ts
data = {
sections: null,
search: '',
menuFaq: [],
results: []
}
findById() {
this.faqService.findById(id, new RequestObject({
onSuccess: (menuFaq) => {
this.data.menuFaq = menuFaq;
}
}));
}
在上面的方法findById()
中,我需要faq.ts
文件的ID,我该如何实现?
答案 0 :(得分:2)
我不确定为什么需要分开FaqPage和FaqController,因为FaqPage已经是一个Controller。我建议直接调用faqService。
就像这样:
export class FaqPage {
data = {
sections: null,
search: '',
menuFaq: [],
results: []
}
constructor(
injector: Injector,
public viewController: ViewController,
public navCtrl: NavController,
public navParams: NavParams
)
{
console.log(this.navParams.get('id'))
}
ngOnInit(){
this.findById(this.navParams.get('id'));
}
findById(id) {
this.faqService.findById(id, new RequestObject({
onSuccess: (menuFaq) => {
this.data.menuFaq = menuFaq;
}
}));
}
}
无论如何,如果确定要这样做,可以在FaqController的构造函数中传递NavParams或FAQ ID
答案 1 :(得分:1)
如果我正确理解了您的问题,则您有一个基础类FaqController
,并且您有一个扩展了该类的类称为FaqPage
。现在,您要使用在FaqPage
中建立的值并在FaqController
中使用它。
在构造函数中获取页面ID时,可以将其传递给控制器。
class FaqController {
constructor(injector: Injector, private pageId: number) {
// ...
}
}
现在,在您的findById中,您可以使用this.pageId
来引用页面ID。
剩下要做的就是更改FaqPage
的构造函数:
constructor(
injector: Injector,
public viewController: ViewController,
public navCtrl: NavController,
public navParams: NavParams
)
{
super(injector, this.navParams.get('id'));
}