将数据从组件发送到控制器

时间:2018-10-03 12:01:34

标签: angular typescript ionic3 angular6

我有一个组件,该组件的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,我该如何实现?

2 个答案:

答案 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'));
}