当前位置: 首页 > 知识库问答 >
问题:

带值的角度属性组件

蔚学林
2023-03-14

使用Angular 6.0.7,我正在创建一个属性组件并向其中注入一个值。为此,我在这里跟随答案。

我想知道有没有一种方法,就像在AngularJS中一样,直接在组件中输入一个值,而不需要定义单独的< code>[form]=""。例如:<代码>

<form (ngSubmit)="login(loginForm.form.valid)" 
      #loginForm="ngForm"
      validate-on-submit='"loginForm"'>
</form>

@Component({
  selector: '[validate-on-submit="form"]',
  template: `<ng-content></ng-content>`
})
export class ValidateOnSubmitComponent implements OnInit {

  @Input() private form: NgForm;

  public ngOnInit(): void {
    console.warn(this.form);    
  }
}

控制台.warn(this.form)导致“未定义”

我正在尝试将我的表单(通过变量#loginForm)注入组件,但我不想进行其他绑定,例如[form]=“loginForm”。根据这里的帖子,这应该是可能的,但我无法工作。自从更高的Angular版本以来,这种情况是否发生了变化,或者我在这里做错了什么?

我试过

我试图通过显式绑定将输入绑定到<code>input</code>变量,<code>input(‘form’)private form:NgForm</code>,但这个alo导致了‘<code>未定义</code>’。

我还尝试恢复或更改引号 validate-on-submit=“loginForm”validate-on-submit=“'loginForm'”,但在一些尝试中,这会导致 Angular 根本没有重新协调组件选择器。

解决方案

有了@user184994的答案,我已经设法更改了我的代码并使其正常工作。这会导致以下代码:

超文本标记语言

<form (ngSubmit)="login(loginForm.form.valid)" 
      #loginForm="ngForm"
      [validate-on-submit]="loginForm">
</form>

元件

@Directive({
  selector: "[validate-on-submit]"
})
export class ValidateOnSubmitComponent {

  @Input("validate-on-submit") private form: NgForm;
}

请注意,选择器周围有 [] 表示它是一个 Angular 指令,并且您正在注入某些内容,并且引用了@Input(“提交时验证”),因为属性的名称中不能有破折号。

共有2个答案

张积厚
2023-03-14

你在这里找到解决方案了吗

HTML:

<form (ngSubmit)="login()"
      #loginForm="ngForm"
      validateonsubmit ="{{loginForm.valid}}" >
</form>

hello.component.html:

form is valid : {{validateonsubmit}}

TS:

import { Component, Input } from '@angular/core';
import {NgForm } from '@angular/forms'

@Component({
  selector: '[validateonsubmit]',
  templateUrl:'./hello.component.html',
  styles: [`h1 { font-family: Lato; }`]
})
export class HelloComponent  {
  @Input() validateonsubmit : NgForm;

  public ngOnInit(): void {
    console.warn(this.validateonsubmit);    
  }

  login(bool){
    console.log(bool);
  }
}
仰城
2023-03-14

您需要创建与属性选择器同名的输入。例如

@Component({
  selector: '[hello]',
  template: `<h1>Hello {{name}}!</h1>`,
  styles: [`h1 { font-family: Lato; }`]
})
export class HelloComponent  {

  @Input() hello: string;

  ngOnInit() {
    console.log(this.hello);
  }
}

这里是工作示例。

 类似资料:
  • 问题内容: 我有一个带有一系列对象属性的对象,这些对象属性具有以下相似的结构(这是从服务返回数据的方式): 当我执行ng-repeat时,我可以遍历所有这5个对象,例如: 但是, 我真正想要做的是仅对那些不是“ foo”类型的项进行迭代 ,即3次迭代而不是5次。我知道可以以某种方式利用过滤器来执行此操作,但是我不确定如何执行。我尝试了以下方法: 但这不起作用。实际上,即使执行以下操作以将对象限制为

  • 我有一个角度组件,它有一个输入< code>Person 在这个组件的父组件中,如果我替换了作为子组件输入的对象,

  • 我有一个父组件和子组件,其中父组件通过@Input修饰符将对象传递给子组件。问题是,子级只获取父级数据一次,然后在将来更改传递给子级的父属性后,不会更新该值。

  • > 到目前为止,我使用角2快速入门创建了一个新项目。 我决定开始使用angular 2 cli,并创建了一个新的angular 2 cli项目。 移动了我的所有文件并重新安装了所有软件包。 现在,当我试图在CLI项目中使用角2材料时,我遵循了这里的指南,但这是我得到的: 会出什么问题?

  • 我一直在看几个用Angular进行行分组的例子。然而,我还没有找到任何一个内部组是可排序的。 例如,看看这个页面: http://swimlane.github.io/ngx-datatable/#行分组 我希望能够在组内按名称排序。 ag-grid可以做到这一点,但许可证非常昂贵。 https://www.ag-grid.com/javascript-grid-grouping/ 这似乎是一个很

  • 问题内容: 您好,我正在尝试在我的应用程序中实现加密。我在前端使用angular(angular-4),在后端使用node js。通过socket.io通过自定义命令进行通信。但基本上,我坚持要在客户端中找到用于RSA加密的适当库。客户端将首先向服务器请求RSA公钥。服务器用密钥响应,但是现在我找不到任何适合使用此公共密钥通过RSA加密数据的库。我已经尝试过node- rsa。以下是代码sn 但我