AngularJS,Typescript通过服务传递变量

时间:2016-02-22 09:53:19

标签: javascript angularjs

我正在使用AngularJS处理一个应用程序,现在的问题是,当我点击一个菜单按钮时我需要传递一个URL,这样我就可以在另一个控制器的另一个视图中的iframe中使用该URL。我一直在尝试很多东西并像整个Stackoverflow一样运行,但我找不到解决问题的方法..

我的服务:

module Services {
    export class PassUrlService {

        getUrl;
        setUrl;
        givenUrl;

        constructor($scope) {
            this.getUrl = function() {
                return this.givenUrl;
            }

            this.setUrl = function (value: string) {
                this.givenUrl = value;
            }
        }

    }
}

我的控制器:

module Controllers {
    export class MainController {

        data = [];
        sce;
        IframeUrl;

        constructor($scope, $sce) {
            $scope.data = this.data;
            $scope.vm = this;
            this.sce = $sce;
        }

        setIframeUrl = function (url) {
            this.IframeUrl = Services.PassUrlService.setUrl(this.sce.trustAsResourceUrl(url));
            debugger;
        }

    }
}

我得到的错误是:

  

错误TS2339:类型'typeof上不存在属性'setUrl'   PassUrlService”。

我希望有人能帮助我解决这个问题,提前谢谢!

1 个答案:

答案 0 :(得分:2)

我认为您不是在控制器中注入您的服务,请尝试下面的示例

service: Services.PassUrlService

constructor($scope, $sce, service: Services.PassUrlService ) {
        $scope.data = this.data;
        $scope.vm = this;
        this.sce = $sce;
        this.service = service
    }