我的“真棒”菜单:
<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 个输出。(?或者我不能...)
我收到两个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"似乎有点奇怪?
我做错了吗?
我认为指令的本地提供者是为其子内容提供服务,例如:
//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)
那么MyService
inmyPipe
的构造函数就可以解决了。
但是,如果有一个组件也在MyService
其本地提供程序中定义并将其应用为:
<myComponent>
<tr myAttr>
<td>{{ item.price | myPipe }}</td>
</tr>
</myComponent>
Run Code Online (Sandbox Code Playgroud)
由于 和MyDirective
都可以为MyComponent
提供服务myPipe
,那么会选择哪一个myPipe
,本地提供商 MyDirective
或MyComponent
?
想象一下,您有 Angular 服务,但没有 ProvideIn,因此它仅在某些组件及其子组件中可用。现在,这样一个组件打开了 MatDialog——是否可以在那里注入该服务?
正如我所看到的,默认情况下 Angular 不会将 MatDialog 组件视为调用者组件的子组件,而且我也没有看到任何可以更改它的设置。
这里的 PS Service 是有状态的,因此只需将其交给 MyDialogComponent 的提供者就会创建新的服务,这是不希望的。