Angular2与ActionCable整合
Angular 2 and ActionCable integration
我正在尝试通过在前端 https://github.com/mwalsher/actioncable-js[=16] 上集成此库,使 Angular2 应用程序(使用 angular-cli 引导)与 Rails 的 ActionCable 一起工作=]
我 npm 安装了库,
将此添加到 angular-cli-build.js
'actioncable-js/index.js',
这在系统中-config.ts:
/** Map relative paths to URLs. */
const map: any = {
'moment': 'vendor/moment/moment.js',
'ng2-bootstrap': 'vendor/ng2-bootstrap',
'lodash': 'vendor/lodash',
'actioncable-js': 'vendor/actioncable-js'
};
/** User packages configuration. */
const packages: any = {
'ng2-bootstrap': {
format: 'cjs',
defaultExtension: 'js',
main: 'ng2-bootstrap.js'
},
'actioncable-js':{
main: 'index.js'
},
'moment':{
format: 'cjs'
},
'lodash':{
main: "lodash.js"
}
};
将此添加到我的组件中:
import { ActionCable } from 'actioncable-js';
但生成错误并显示此消息:
Cannot find module 'actioncable-js'.
有人知道为什么吗?
我猜是缺少输入,但我不确定如何解决这个问题。
不,打字没有问题。您缺少的是如何在 angular 2 typescript 应用程序中使用 Javascript 库。如果你想在你的 TypeScript 应用程序中使用 JavaScript 库,那么你需要导入库 import 'actioncable-js'
然后你必须声明变量。 declare let ActionCable:any
这告诉打字稿我们有一个全局变量 ActionCable 出现在我们的应用程序中。现在您可以在 angular 2 组件实现中访问它并执行任何您想执行的操作。您可以阅读讨论 .
angular-cli.build.js
vendorNpmFiles: ['actioncable-js/**/*.js']
systemjs.config.js
map:{ 'actioncable-js':'vendor/actioncable-js/dist/action_cable.js'}
package:{'actioncable-js': defaultExtension: 'js'} }
`
app.component.ts
import 'actioncable-js';
declare let ActionCable:any;
@Component({
....
})
export class AppComponent implements OnInit{
constructor(){}
ngOnInIt(){
//can access *ActionCable* object here
}
}
Rails 已经在这里发布了一个官方的 actioncable 包:
我正在尝试通过在前端 https://github.com/mwalsher/actioncable-js[=16] 上集成此库,使 Angular2 应用程序(使用 angular-cli 引导)与 Rails 的 ActionCable 一起工作=]
我 npm 安装了库,
将此添加到 angular-cli-build.js
'actioncable-js/index.js',
这在系统中-config.ts:
/** Map relative paths to URLs. */
const map: any = {
'moment': 'vendor/moment/moment.js',
'ng2-bootstrap': 'vendor/ng2-bootstrap',
'lodash': 'vendor/lodash',
'actioncable-js': 'vendor/actioncable-js'
};
/** User packages configuration. */
const packages: any = {
'ng2-bootstrap': {
format: 'cjs',
defaultExtension: 'js',
main: 'ng2-bootstrap.js'
},
'actioncable-js':{
main: 'index.js'
},
'moment':{
format: 'cjs'
},
'lodash':{
main: "lodash.js"
}
};
将此添加到我的组件中:
import { ActionCable } from 'actioncable-js';
但生成错误并显示此消息:
Cannot find module 'actioncable-js'.
有人知道为什么吗?
我猜是缺少输入,但我不确定如何解决这个问题。
不,打字没有问题。您缺少的是如何在 angular 2 typescript 应用程序中使用 Javascript 库。如果你想在你的 TypeScript 应用程序中使用 JavaScript 库,那么你需要导入库 import 'actioncable-js'
然后你必须声明变量。 declare let ActionCable:any
这告诉打字稿我们有一个全局变量 ActionCable 出现在我们的应用程序中。现在您可以在 angular 2 组件实现中访问它并执行任何您想执行的操作。您可以阅读讨论
angular-cli.build.js
vendorNpmFiles: ['actioncable-js/**/*.js']
systemjs.config.js
map:{ 'actioncable-js':'vendor/actioncable-js/dist/action_cable.js'}
package:{'actioncable-js': defaultExtension: 'js'} }
`
app.component.ts
import 'actioncable-js';
declare let ActionCable:any;
@Component({
....
})
export class AppComponent implements OnInit{
constructor(){}
ngOnInIt(){
//can access *ActionCable* object here
}
}
Rails 已经在这里发布了一个官方的 actioncable 包: