小编Pet*_*nov的帖子

将数据传递到 mat-menu

我的“真棒”菜单:

<mat-menu #appMenu="matMenu">
  <ng-template matMenuContent let-myobject="myobject">
    <button mat-menu-item>Delete {{myobject.name}}</button>
    <button mat-menu-item>Smth else</button>
  </ng-template>
</mat-menu>

<button mat-icon-button [matMenuTriggerFor]="appMenu" [matMenuTriggerData]="{myobject: myobject}">
   <mat-icon>more_vert</mat-icon>
</button>
Run Code Online (Sandbox Code Playgroud)

第一个问题是可以吗?写了这以下的文档,但let-myobject="myobject"{myobject: myobject}貌似开销(?)

第二个问题是,如果我想根据myobject- 我怎么做来计算一些数据?我希望它在菜单打开之前计算。

[matMenuTriggerData]="getData(myobject)" - 不能做这个或类似的工作

<ng-template matMenuContent let-data="getData(myobject)"> - 也不能做这个或类似的工作

我知道我可以在这里用组件替换 ng-template,但是对于例如 10 个菜单项,我需要在这个组件中做 10 个输出。(?或者我不能...)

angular-material angular

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

使用JWKs Endpoint处理JWT令牌

我收到两个JWT:一个OpenID Connect令牌(id_token)和一个访问令牌(access_token).OpenID的情况或多或少都很清楚 - 我可以使用JWKs Endpoint验证它:https://smth.com/JWKS .

例如(https://bitbucket.org/b_c/jose4j/wiki/JWT%20Examples):

HttpsJwks httpsJkws = new HttpsJwks("https://smth.com/JWKS");
HttpsJwksVerificationKeyResolver httpsJwksKeyResolver = new HttpsJwksVerificationKeyResolver(httpsJkws);
jwtConsumer = new JwtConsumerBuilder()
    .setVerificationKeyResolver(httpsJwksKeyResolver)
    .setExpectedAudience(...)
    .setExpectedIssuer(...)
    .build();
Run Code Online (Sandbox Code Playgroud)

问题是如何继续使用访问令牌.我可以从中提取userId和userDetails,但我想我还需要验证它吗?

如果我尝试与令牌相同,我会收到错误:UnresolvableKeyException: Unable to find a suitable verification key for JWS w/ header {"alg" : "RS256", "kid":"1"}.事实上,"孩子"没有关键:"1",这个值"1"似乎有点奇怪?

我做错了吗?

jwt jose4j

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

指令和组件中本地提供者的优先级

我认为指令的本地提供者是为其子内容提供服务,例如:

//template in a module 
<table>
   <tr>
      <td>{{ item.price | myPipe }}</td>    
   </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

myPipe在其构造函数中具有依赖项MyService

因此,如果我将指令定义为:

@Directive({
    selector: "[myAttr]", 
    providers: [MyService]
})
export class MyDirective { }
Run Code Online (Sandbox Code Playgroud)

并将其应用为:

<table>
   <tr myAttr>
      <td>{{ item.price | myPipe }}</td>    
   </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

那么MyServiceinmyPipe的构造函数就可以解决了。

但是,如果有一个组件也在MyService其本地提供程序中定义并将其应用为:

<myComponent>
   <tr myAttr>
      <td>{{ item.price | myPipe }}</td>    
   </tr>
</myComponent>
Run Code Online (Sandbox Code Playgroud)

由于 和MyDirective都可以为MyComponent提供服务myPipe,那么会选择哪一个myPipe,本地提供商 MyDirectiveMyComponent

angular-directive angular

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

在 MatDialog 中提供额外的提供程序

想象一下,您有 Angular 服务,但没有 ProvideIn,因此它仅在某些组件及其子组件中可用。现在,这样一个组件打开了 MatDialog——是否可以在那里注入该服务?

正如我所看到的,默认情况下 Angular 不会将 MatDialog 组件视为调用者组件的子组件,而且我也没有看到任何可以更改它的设置。

这里的 PS Service 是有状态的,因此只需将其交给 MyDialogComponent 的提供者就会创建新的服务,这是不希望的。

angular-material angular

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