小编Wen*_*uen的帖子

Angular Material和Jasmine:"没有PullToken MdDialogData的提供者!"

我有一个组件,用于Angular Material MdDialog:

@Component({
  ...
})
export class MyComponent {

  constructor(@Inject(MD_DIALOG_DATA) public data: any, public dialogRef: 
MdDialogRef<MyComponent>) {
...
  }


}
Run Code Online (Sandbox Code Playgroud)

我试图用Jasmine进行单元测试:

describe('MyComponent', () => {
  let component: MyComponent;
  let fixture: ComponentFixture<MyComponent>;

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      imports: [
        SharedTestingModule,
      ],
      declarations: [
        MyComponent,
      ],
    })
    .compileComponents();
  }));

  ...

});
Run Code Online (Sandbox Code Playgroud)

不幸的是,我收到以下错误:

错误:没有InjectionToken MdDialogData的提供程序!

SharedTestingModule导入和导出我的自定义Angular Material模块,该模块本身导入并导出MdDialogModule.

我怎样才能摆脱这个错误?

非常感谢你!

Angular 4.2.4
Angular Material 2.0.0-beta.7
Jasmine 2.5.3
Run Code Online (Sandbox Code Playgroud)

jasmine angular-material mddialog angular-material2 angular

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

如何在Angular Material 2中使用<md-error>?

当Angular Material 2中的所需输入无效时,我试图显示错误消息.Angular Material演示应用程序中有一个示例:

<form novalidate>
  <h4>Inside a form</h4>

  <md-input-container>
    <input mdInput name="example" placeholder="example"
      [(ngModel)]="errorMessageExample3" required>
    <md-error>This field is required</md-error>
  </md-input-container>

  <button color="primary" md-raised-button>Submit</button>
</form>
Run Code Online (Sandbox Code Playgroud)

预期结果

不幸的是,当我尝试做同样的事情时,我得到:

Unhandled Promise rejection: Template parse errors:
'md-error' is not a known element:
1. If 'md-error' is an Angular component, then verify that it is part 
   of this module.
2. If 'md-error' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' 
   to the '@NgModule.schemas' of this component to suppress this message.
Run Code Online (Sandbox Code Playgroud)

我应该怎么做才能使用<md-error>

angular-material angular-material2 angular

8
推荐指数
1
解决办法
9659
查看次数

Cognito:重定向到其他域并保持身份验证

我在两个不同的域上有两个 Angular 应用程序,它们使用 AWS Amplify 进行身份验证。
它们都使用相同的 Cognito 用户池和相同的 Cognito 应用程序客户端。
应用程序客户端不使用 Cognito 托管 UI,也不使用 OAuth 2.0。
身份验证协议是默认的 AWS Amplify 协议:SRP(安全远程密码协议)。

有时,我的用户登录到domain1,而实际上他们应该登录到domain2(业务规则,取决于用户的个人资料)。
在这种情况下,我希望它们被重定向到domain2并自动进行身份验证。

有没有一种干净的方法可以使用 Cognito 进行此类重定向?我有一个解决方案,意味着将 Cognito 令牌从domain1本地存储传递到重定向url,然后在domain2中执行相反的操作,但显然这感觉像是黑客攻击。

authentication redirect amazon-cognito aws-amplify

7
推荐指数
0
解决办法
772
查看次数

从 URL 加载 Keycloak 配置

Keycloak 3.2的JavaScript适配器文档说,你可以用实例化对象keycloak:

var keycloak = Keycloak('http://localhost:8080/myapp/keycloak.json'));
Run Code Online (Sandbox Code Playgroud)

但是当我尝试这样做时,看起来我的 keycloak.config 文件没有正确设置,因为我最终得到:

Uncaught TypeError: Cannot read property 'charAt' of undefined
  at getRealmUrl (keycloak.js:482)
  at Keycloak.kc.createLoginUrl (keycloak.js:233)
  at Object.login (keycloak.js:897)
  at Keycloak.kc.login (keycloak.js:205)
  at doLogin (keycloak.js:121)
  at onLoad (keycloak.js:144)
  at Object.processInit [as successCallback] (keycloak.js:187)
  at Object.setSuccess (keycloak.js:771)
  at XMLHttpRequest.req.onreadystatechange (keycloak.js:598)
  at XMLHttpRequest.wrapFn [as __zone_symbol___onreadystatechange] (zone.js:1056)
Run Code Online (Sandbox Code Playgroud)

然而,当我使用http://localhost:8080/myapp/keycloak.json浏览器访问时,我得到:

Uncaught TypeError: Cannot read property 'charAt' of undefined
  at getRealmUrl (keycloak.js:482)
  at Keycloak.kc.createLoginUrl (keycloak.js:233)
  at Object.login (keycloak.js:897)
  at Keycloak.kc.login (keycloak.js:205)
  at doLogin (keycloak.js:121)
  at …
Run Code Online (Sandbox Code Playgroud)

javascript jboss-tools keycloak

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