我试图在使用cellRenderer创建的按钮的click事件上调用服务方法时遇到此问题.
我正在使用带有Angular2的ag-grid.
{ headerName: 'Update', field: "update", width: 80, cellRenderer : this.updateRecord }
updateRecord(params) {
var eDiv = document.createElement('div');
eDiv.innerHTML = '<span class="my-css-class"><button class="edit">Edit</button></span>';
var eButton = eDiv.querySelectorAll('.edit')[0];
eButton.addEventListener('click', function() {
this.myService.getAll().subscribe(data => console.log(JSON.stringify(data)))
});
return eDiv;
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
EXCEPTION: Cannot read property 'getAll' of undefined
Run Code Online (Sandbox Code Playgroud)
此外,我无法访问任何我的组件变量.
我见过Angular的一些i18n插件,但我不想重新发明这个轮子.i18next是一个很好的库,因此,我打算使用它.
我创建了一个指令i18n,它只调用i18n库:
define(['app', 'jquery', 'i18n'], function(app, $, i18n) {'use strict';
app.directive('i18n', function() {
return function($scope, elm, attrs) {
attrs.$observe('i18n', function(value) {
if ($.fn.i18n) {// for some reason, it isn't loaded quickly enough and first directives process fails
$(elm).i18n();
}
});
};
});
});
Run Code Online (Sandbox Code Playgroud)
在我的页面上,我可以动态更改语言:
<a ng-repeat="l in languages"> <img ng-src="images/{{l.id}}.png" title="{{l.label}}" ng-click="setLanguage(l.id)" /> </a>
Run Code Online (Sandbox Code Playgroud)
现在,我的主控制器在html标签上定义:
define(['app', 'i18n', 'jquery'], function(app, i18n, $) {'use strict';
return app.controller('BuilderController', ['$scope', '$location',
function BuilderController($scope, $location) {
/* Catch url changes */
$scope.$watch(function() {
return $location.path(); …Run Code Online (Sandbox Code Playgroud) javascript internationalization angularjs angularjs-directive
我需要在 Angular 的一个大型项目中实现国际化。根据我的发现,有两个主要选择:Angular 的官方i18n或ngx-translate。
为了了解两者的优缺点,我进行了很多讨论:
https://github.com/angular/angular/issues/16477
https://github.com/ngx-translate/core/issues/495
https://github.com/ngx-translate/core/issues/783
现在,第三个选项是“ angular-i18next ”。这方面的文档并不多。我知道它是 i18next 的包装器。但它是否克服了任何缺点,例如:
翻译非模板文本。
无需重新加载页面的动态翻译。
使用 AOT 编译进行单一构建。
或者,我最好的选择是在i18n和ngx-translate之间进行选择?另外,有人在使用“ angular-i18next ”吗?
internationalization i18next angular-i18n ngx-translate angular