【问题标题】:No provider for NavController(in service)NavController 没有提供者(服务中)
【发布时间】:2018-01-18 15:57:50
【问题描述】:

在服务的构造函数中注入 NavController 失败,没有提供者错误。有人可以为此提供解决方法吗?

【问题讨论】:

  • 您能否提供完整的错误消息,以及至少收到它的代码部分?

标签: ionic2


【解决方案1】:

NavControllerNOT 旨在注入到 Service 类中,因为这不是他们的预期目的。该服务不应该负责显示警报/加载/或任何需要由导航激活的组件。服务应该只是用于获取和返回数据。其他任何事情都应该在组件内完成。

以下是服务指南:

从服务更改视图是不好的做法(损坏的 MVC)。 但是,您可以将事件从服务发送到主控制器, 控制器可以使用 NavController (最好的方式),或者你可以发送 NavController 像属性一样为您的服务提供服务(不错的方式......)。要么 您可能需要创建一个组件而不是使用该服务。

【讨论】:

    【解决方案2】:

    您不能以正常方式在服务中使用NavController。你应该这样做:

    import {  App} from 'ionic-angular';
    constructor(private app: App){
    }
    gotoPage(page: any){
        this.app.getRootNav().push(page);
    }
    

    【讨论】:

    • 这应该可以,但是@Debo 如果你真的需要从服务导航到另一个页面,那么你的应用程序的架构设计是错误的。相反,您应该从服务返回一些结果,并从首先调用该服务的页面导航。但是 +1,因为这应该可以工作。
    猜你喜欢
    • 2017-03-01
    • 2018-09-22
    • 2018-05-19
    • 2016-11-02
    • 2012-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-16
    相关资源
    最近更新 更多