0

我可以轻松地将 angular2 提供程序添加到 UpgradeAdapter:

import { HTTP_PROVIDERS } from 'angular2/http';
upgradeAdapter.addProvider(HTTP_PROVIDERS);

我可以升级一个 ng1 指令(组件)也很容易:

const DirectiveNg1 = upgradeAdapter.upgradeNg1Component('DirectiveNg1');

但是我DirectiveNg1在很多地方都需要并且想在 angular2 组件中使用它们。是否有可能以某种方式获得参考?

目前我已经在我的 angular2 组件中指定了以下内容并且它可以工作,但我只想upgradeNg1Component('DirectiveNg1')在我的 main.js 文件中指定一次。

const DirectiveNg1 = upgradeAdapter.upgradeNg1Component('DirectiveNg1');
// how can I replace the line above, and get a reference from the UpgradeAdapter
@Component({
    directives: [DirectiveNg1],
    ...
})
4

1 回答 1

0

我知道这篇文章有点旧,但这花了我很长时间的互联网搜索才能解决。我认为这方面的文档不是很好。

这种最简单的方法是如果您只需要一个模块。你可以定义如下。

import { NgModule, forwardRef } from '@angular/core';
import { UpgradeAdapter } from '@angular/upgrade';

export const upgradeAdapter = new UpgradeAdapter(forwardRef(() => AppModule ));
const DirectiveNg1 = upgradeAdapter.upgradeNg1Component('DirectiveNg1');

@NgModule({
 imports: [BrowserModule, HttpModule],
 providers: [],
 declarations: [DirectiveNg1],
 exports: []
})
export class AppModule { }

现在 DirectiveNg1 可用于 angular2 组件。

于 2016-11-02T15:42:59.663 回答