小编Joh*_*nko的帖子

抽象基类上的 Angular 9 装饰器

我正在努力将我的项目从 Angular 8 升级到 9,并且在扩展类时遇到了新需求的问题。

根据 Angular 的文档

使用 Angular 功能的未修饰基类

从版本 9 开始,不推荐使用未修饰的基类:

  • 使用 Angular 功能
  • 由指令或组件扩展

Angular 生命周期挂钩或以下任何 Angular 字段装饰器都被视为 Angular 功能:

  • @Input()
  • @Output()
  • @HostBinding()
  • @HostListener()
  • @ViewChild()/@ViewChildren()
  • @ContentChild()/@ContentChildren()

对于@Component装饰器,它需要基类上的templateor 。templateURL添加任一都会导致子类不呈现其模板。

例如,以下结果不会在视图上呈现任何内容:

@Component({
  template: ''
})
export abstract class BaseComponent<T extends AbstractSuperEntity> extends Toggler implements OnChanges {
  @Input()
  year: number | string

  constructor(service: MyService) {

  }

  ngOnChanges() {
  }
}

@Component({
  templateUrl: 'my.component.html',
  selector: 'my-component'
})
export …
Run Code Online (Sandbox Code Playgroud)

angular angular9

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

检查是否需要 NgControl

由于各种原因,我有几个包装 PrimeNG 组件的自定义组件。我的组件的某些实例以反应形式使用,并且该字段的“要求”是使用Validators.required验证器设置的。

PrimeNG 组件提供一个required属性。

如何检查组件的 NgControl 是否有所需的验证器?存在.disabled.invalid,但.invalid可以表示任何意思。

这是我现在使用的,它适用于下拉菜单,但对于任何其他类型的输入来说都是不正确的。

@Component({
  selector: 'my-component',
  templateUrl: 'my.component.html'
})
export class MyComponent implements OnInit, ControlValueAccessor {
  
  @Input()
  public disabled: boolean
  @Input()
  public required: boolean

  constructor(
        @Optional() @Self() public ngControl: NgControl
  ) {
        if (this.ngControl != null) {
            this.ngControl.valueAccessor = this;
        }
    }

    ngOnInit() {
        if (this.ngControl) {
            this.required = this.ngControl.invalid;
            this.disabled = this.ngControl.disabled;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我确信有更好的方法可以做到这一点,但我不知道如何做。

primeng angular angular-reactive-forms angular-forms

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

Aurelia:如何在儿童路线之间导航

我正试图从一条儿童路线导航到另一条儿童路线,但我不断得到Route not found.我的主要问题是:如何在儿童观点之间导航?

以下是代码,我也将在下面提出其他问题.

应用模式 - 查看 应用类:

export class App {
  configureRouter(config, router) {
    config.title = 'My Site';

    config.map([
      { route: ['','job-view'], name: 'jobView', moduleId: './job-view', nav: true, title:'Jobs'},
      { route: ['services'], name: 'services', moduleId: './services', nav: true, title:'Services'}
    ]);

    this.router = router;
    this.router.refreshNavigation();
  }
}
Run Code Online (Sandbox Code Playgroud)

问题2:router如果始终可以访问,为什么我们需要保存在这里aurelia-router

应用页面:

<template>
  <require from='./nav-bar'></require>
  <nav-bar router.bind="router"></nav-bar>
  <div class="container">
      <router-view></router-view>
  </div>
</template>
Run Code Online (Sandbox Code Playgroud)

好了,现在我们已经定义了根页面视图和导航,让我们定义job-viewMV.

JobView类:

export class JobView {
  configureRouter(config, router) {
    config.map([
      { route: …
Run Code Online (Sandbox Code Playgroud)

aurelia aurelia-router

6
推荐指数
2
解决办法
6499
查看次数

需要澄清JMS与ActiveMQ bean /资源配置

在如何使用JMS资源以及在注释activationConfig上正确设置方面似乎存在一些不一致.@ActivationConfigProperty@MessageDriven

首先,这是我的资源配置(glassfish-resources.xml,但可以翻译成其他部署描述符).这适用于Glassfish(asadmin add-resources glassfish-resources.xml)以及ActiveMQ资源适配器:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE resources PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Resource Definitions//EN" "http://glassfish.org/dtds/glassfish-resources_1_5.dtd">
<resources>

    <resource-adapter-config name="activemq-rar" 
                             thread-pool-ids="thread-pool-1" 
                             resource-adapter-name="activemq-rar">
        <property name="ServerUrl" value="tcp://localhost:61616"/>
        <property name="UserName" value="admin"/>
        <property name="Password" value="admin"/>
        <property name="UseInboundSession" value="false"/>
    </resource-adapter-config>
    <admin-object-resource enabled="true" 
                           jndi-name="jms/queue/myApp" 
                           object-type="user" 
                           res-adapter="activemq-rar" 
                           res-type="javax.jms.Queue">
        <description>MyApp JMS Queue</description>
        <property name="Name" value="myAppAMQ"/>
        <property name="PhysicalName" value="myAppAMQ"/>     
    </admin-object-resource>
    <connector-resource enabled="true" 
                        jndi-name="jms/factory/myApp" 
                        object-type="user" 
                        pool-name="jms/factoryPool/myApp">
        <description>MyApp Connection Factory</description>
        <property name="Name" value="myAppFactory"/>
    </connector-resource>
    <connector-connection-pool associate-with-thread="false" 
                               connection-creation-retry-attempts="0" 
                               connection-creation-retry-interval-in-seconds="10" 
                               connection-definition-name="javax.jms.QueueConnectionFactory" 
                               connection-leak-reclaim="false" …
Run Code Online (Sandbox Code Playgroud)

java activemq-classic jms glassfish ejb-3.1

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

PayaraMicro 未在 WAR 的 glassfish-resources.xml 中添加 jdbc 详细信息

我有一个 web 应用程序,我试图在 Payara Micro 的 docker 容器中部署,但glassfish-resources.xml详细信息没有添加到服务器的microdomain.xml.

JDBC 定义非常基本,使用从 docker 命令设置的环境变量(这是位于MyApp.war/WEB-INF/glassfish-resources.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE resources PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Resource Definitions//EN" "http://glassfish.org/dtds/glassfish-resources_1_5.dtd">
<resources>

    <jdbc-resource pool-name="MyAppDB" jndi-name="jdbc/MyAppDB" enabled="true" ></jdbc-resource>


    <jdbc-connection-pool datasource-classname="com.microsoft.sqlserver.jdbc.SQLServerDataSource" 
                          name="MyAppDB" 
                          res-type="javax.sql.DataSource">
      <property name="User" value="${ENV=MY_APP_DATABASE_USER}"></property>
      <property name="Password" value="${ENV=MY_APP_DATABASE_PASS}"></property>
      <property name="DatabaseName" value="${ENV=MY_APP_DATABASE_NAME}"></property>
      <property name="ServerName" value="${ENV=MY_APP_DATABASE_SERVER}"></property>
      <property name="PortNumber" value="1433"></property>
    </jdbc-connection-pool>    

</resources>
Run Code Online (Sandbox Code Playgroud)

这是payara.env文件:

MY_APP_DATABASE_USER=someuser
MY_APP_DATABASE_PASS=somepass
MY_APP_DATABASE_NAME=MY_APP_DB
MY_APP_DATABASE_SERVER=192.168.10.110
Run Code Online (Sandbox Code Playgroud)

正如您从下面的日志中看到的,mysql-jdbc-7.0.0.jre8.jar确实被添加到类路径中。

码头工人命令:

docker run -p 8080:8080 \
           --mount type=bind,src=$(pwd)/deployments,dst=/opt/payara/deployments \
           --mount type=bind,src=$(pwd)/lib,dst=/opt/payara/lib …
Run Code Online (Sandbox Code Playgroud)

docker payara payara-micro

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