小编Mic*_*ryl的帖子

在Angular中,您如何确定活动路线?

注意: 这里有许多不同的答案,大多数都是有效的.事实是,当Angular团队改变其路由器时,有效的改变了很多次.最终将成为 Angular路由器的Router 3.0版本打破了许多这些解决方案,但它提供了一个非常简单的解决方案.从RC.3开始,首选的解决方案是使用[routerLinkActive]本答案中所示.

在Angular应用程序中(当我写这篇文章时,目前在2.0.0-beta.0版本中),您如何确定当前活动路由是什么?

我正在开发一个使用Bootstrap 4的应用程序,我需要一种方法将导航链接/按钮标记为在<router-output>标记中显示其关联组件时处于活动状态.

我意识到,当点击其中一个按钮时,我可以自己维护状态,但这不会涵盖将多条路径放入同一路径的情况(例如主导航菜单以及主要组件中的本地菜单) ).

任何建议或链接将不胜感激.谢谢.

javascript typescript angular2-routing angular

275
推荐指数
17
解决办法
18万
查看次数

如何重定向到Angular2中的外部URL?

在Angular 2中将用户重定向到完全外部URL的方法是什么.例如,如果我需要将用户重定向到OAuth2服务器以进行身份​​验证,我该怎么做?

Location.go(),Router.navigate()并且Router.navigateByUrl()可以将用户发送到Angular 2应用程序中的另一个部分(路由),但我看不出它们如何用于重定向到外部站点?

redirect angular2-routing angular

136
推荐指数
11
解决办法
21万
查看次数

如何在Angular2中取消订阅

如何在Angular2中取消订阅?RxJS似乎有一个dispose方法,但我无法弄清楚如何访问它.所以我有代码可以访问EventEmitter并订阅它,如下所示:

var mySubscription = someEventEmitter.subscribe(
    (val) => {
        console.log('Received:', val);
    },
    (err) => {
        console.log('Received error:', err);
    },
    () => {
        console.log('Completed');
    }
);
Run Code Online (Sandbox Code Playgroud)

mySubscription该如何取消订阅?

javascript rxjs angular

77
推荐指数
3
解决办法
7万
查看次数

Angular2 RxJS得到'Observable_1.Observable.fromEvent不是函数'错误

我正在使用AngularJS 2 Beta 0,我正在尝试从窗口对象上的事件创建一个RxJS Observable.我相信我知道在我的服务中将事件捕获为Observable的公式:

var observ = Observable.fromEvent(this.windowHandle, 'hashchange');
Run Code Online (Sandbox Code Playgroud)

问题是,每次我尝试运行此代码时,都会收到一条错误消息,指出'fromEvent'不是函数.

Uncaught EXCEPTION: Error during evaluation of "click"
ORIGINAL EXCEPTION: TypeError: Observable_1.Observable.fromEvent is not a function
Run Code Online (Sandbox Code Playgroud)

这似乎意味着我现在没有import正确处理我,因为RxJS没有包含在Angular 2的构建中,尽管我的应用程序的其余部分正常运行,这对我来说意味着RxJS应该是它应该的位置.

我在服务中的导入如下所示:

import {Observable} from 'rxjs/Observable';
Run Code Online (Sandbox Code Playgroud)

虽然我也尝试使用它(对代码进行适当的更改),但结果相同:

import {FromEventObservable} from 'rxjs/observable/fromEvent';
Run Code Online (Sandbox Code Playgroud)

我的Index.html中有以下配置:

<script>
    System.config({
        map: {
            rxjs: 'node_modules/rxjs'
        },
        packages: {
            'app': {defaultExtension: 'js'},
            'rxjs': {defaultExtension: 'js'}
        }
    });
    System.import('app/app');
</script>
Run Code Online (Sandbox Code Playgroud)

有人能告诉我我做错了什么吗?

javascript reactive-extensions-js rxjs typescript angular

50
推荐指数
2
解决办法
4万
查看次数

如何在Gradle构建中使用jar文件的提供范围?

我需要在我的应用中使用亚马逊地图和亚马逊消息.

使用gradle,我没有成功添加具有"提供"范围的Amazon依赖项,因为它们需要:

JAR文件包含Amazon Maps API的存根实现.它不包含Maps API类的实际实现,因此您不应将JAR编译到您的应用程序中.

亚马逊支持提供的解决方案都不适合我.

如果有人成功使用亚马逊地图或亚马逊消息与Gradle,请在此处分享您的build.gradle文件.

scope gradle

39
推荐指数
3
解决办法
5万
查看次数

如何从Angular2 FormControl对象获取输入字段的名称?

我有一个Angular 2应用程序,它使用该ReactiveForms模块来管理使用自定义验证器的表单.验证器接收一个FormControl对象.我有一些输入字段可以使用相同的自定义验证器,只要我知道FormControl传递给验证器时字段的名称.

我找不到任何FormControl公开输入字段名称的方法或公共属性.当然,它很容易看到它的价值.以下显示了我想如何使用它:

public asyncValidator(control: FormControl): {[key: string]: any} {
  var theFieldName = control.someMethodOfGettingTheName(); // this is the missing piece

  return new Promise(resolve => {
      this.myService.getValidation(theFieldName, control.value)
        .subscribe(
          data => {
            console.log('Validation success:', data);
            resolve(null);
          },
          err => {
            console.log('Validation failure:', err);
            resolve(err._body);
          });
    });
  }
Run Code Online (Sandbox Code Playgroud)

typescript angular2-forms angular angular-forms

25
推荐指数
5
解决办法
2万
查看次数

angular2-polyfills现在在哪里,非beta Angular 2打包为@angular?

现在Angular2已经完成测试版(2.0.0-RC.0和RC.1于昨天/ 2016年5月3日发布),所有Angular 2都打包用于新的@angular命名空间下的NPM.很多软件包已被移动,现在必须单独安装,正如你在Angular2 CHANGELOG中看到的那样.

但是,CHANGELOG没有解决的一件事是如何找到angular2-polyfills以前可用的捆绑包.

我的beta代码在其中一个TypeScript文件中调用了它:

import 'angular2/bundles/angular2-polyfills';
Run Code Online (Sandbox Code Playgroud)

现在我需要做什么才能使用新的包布局获得相同的功能?

这是ventdor.ts用于导入polyfill 的文件,以便webpack可以包含它:

require('./css/bootstrap.css');
require('./css/main.css');

import 'angular2/bundles/angular2-polyfills'; // THIS NO LONGER WORKS

require('./lib/bootstrap/bootstrap.js');
Run Code Online (Sandbox Code Playgroud)

当我使用webpack构建应用程序时,缺少polyfill导致如下错误:

ERROR in /Users/mfo/Projects/PennMutual/angular2-oauth2/node_modules/@angular/core/src/facade/async.d.ts
(28,45): error TS2304: Cannot find name 'Promise'.

ERROR in /Users/mfo/Projects/PennMutual/angular2-oauth2/node_modules/@angular/core/src/facade/lang.d.ts
(4,17): error TS2304: Cannot find name 'Map'.

ERROR in /Users/mfo/Projects/PennMutual/angular2-oauth2/node_modules/@angular/core/src/facade/lang.d.ts
(5,17): error TS2304: Cannot find name 'Set'.
Run Code Online (Sandbox Code Playgroud)

typescript angular

24
推荐指数
2
解决办法
1万
查看次数

在Angular 2中的多个组件中全局保持和访问值

我有一个设置页面,用户可以在其中保存一些配置变量,例如用户名.用户还可以更改该页面上的用户名.但是当我转到另一个组件(页面)并返回时,用户名不会保存.

我还想在其他组件中显示用户名.我怎么做?有一个全局变量?

结构: - 应用程序 - app.ts(主要) - setting.ts - someOtherComponent.ts

angular2-services angular

17
推荐指数
2
解决办法
5万
查看次数

Apache Sling - 在Windows中启动时的OSGI框架异常

在使用Java 1.7在Windows上启动Sling时,我收到以下错误消息(见下文).我正在使用Sling 6(http://www.apache.org/dyn/closer.cgi/sling/org.apache.sling.launchpad-6-standalone.jar).知道什么可能是错的吗?

上次我尝试在Mac OSX上使用相同的Sling版本并且它工作得很好.

Failed to Start OSGi framework
org.osgi.framework.BundleException: Uncaught Instantiation Issue: 
java.lang.ArrayIndexOutOfBoundsException: -1
     at 
org.apache.sling.launchpad.base.impl.Sling.<init>(Sling.java:245)
     at 
org.apache.sling.launchpad.base.app.MainDelegate$1.<init>(MainDelegate.java:159)
     at 
org.apache.sling.launchpad.base.app.MainDelegate.start(MainDelegate.java:159)
     at org.apache.sling.launchpad.app.Main.startSling(Main.java:244)
     at org.apache.sling.launchpad.app.Main.<init>(Main.java:107)
     at org.apache.sling.launchpad.app.Main.main(Main.java:56)
Caused by: java.lang.ArrayIndexOutOfBoundsException: -1
     at java.util.ArrayList.elementData(Unknown Source)
     at java.util.ArrayList.get(Unknown Source)
     at 
org.apache.felix.framework.BundleImpl.getCurrentModule(BundleImpl.java:1046)
     at 
org.apache.felix.framework.BundleImpl.getSymbolicName(BundleImpl.java:863)
     at 
org.apache.sling.launchpad.base.impl.SlingFelix.getSymbolicName(SlingFelix.java:32)
     at org.apache.felix.framework.Felix.toString(Felix.java:1012)
     at org.apache.felix.framework.Logger.doLog(Logger.java:128)
     at org.apache.felix.framework.Logger._log(Logger.java:181)
     at org.apache.felix.framework.Logger.log(Logger.java:114)
     at 
org.apache.felix.framework.ExtensionManager.<init>(ExtensionManager.java:201)
     at org.apache.felix.framework.Felix.<init>(Felix.java:374)
     at 
org.apache.sling.launchpad.base.impl.SlingFelix.<init>(SlingFelix.java:39)
     at 
org.apache.sling.launchpad.base.impl.Sling.<init>(Sling.java:235)
Run Code Online (Sandbox Code Playgroud)

sling aem

15
推荐指数
1
解决办法
3919
查看次数

自动重新连接Node.js应用程序中的Stomp.js

我正在使用Node.js和Express编写的应用程序,我正在尝试使用Stomp.js客户端连接到ActiveMQ服务器.

我可以使用Stomp将应用程序连接到ActiveMQ,但我无法让系统在连接失败时自动重新连接.似乎只有在连接最初成功然后被切断时才调用失败函数,但是如果在Node应用程序启动时ActiveMQ已经关闭,我确实看到了证明失败函数被调用的错误消息.

var Stomp = require('stompjs');
var stompClient = Stomp.overTCP('localhost', 61612);
var stompStatus = false;

var stompSuccessCallback = function (frame) {
    stompStatus = true;
    console.log('STOMP: Connection successful');
};

var stompFailureCallback = function (error) {
    stompStatus = false;
    console.log('STOMP: ' + error);

    setTimeout(stompConnect, 10000);
    console.log('STOMP: Reconecting in 10 seconds');
};

function stompConnect() {
    console.log('STOMP: Attempting connection');
    stompClient.connect('login', 'password', stompSuccessCallback, stompFailureCallback);

}

stompConnect();
Run Code Online (Sandbox Code Playgroud)

有没有人知道这里发生了什么?

javascript stomp node.js express

15
推荐指数
1
解决办法
2万
查看次数