typescript 有没有什么方法可以为mat-chips组件添加href链接作为属性

jgovgodb  于 2023-11-20  发布在  TypeScript
关注(0)|答案(2)|浏览(155)

我试图添加一个新的图标,并可能在垫芯片组件上的href,但我希望它作为属性,而不是硬编码到这一点。所以的想法是有它作为一个组件,所以我可以从另一个组件调用它,并给予数据。例如链接,图标在左侧和右侧。左边的图标应该是一个编辑图标和右侧将默认删除。但在悬停,这两个图标都需要高亮显示。比如说,如果我们从另一个组件定义了左边的图标,那么它将被显示,如果没有,那么它将不被显示。或者它也可以在一个指令中完成吗?
我到现在为止已经创建了这样的,但我认为我需要做更多的事情。见stackblitz。也许不是ngIf是任何其他方式使用它。但我想例如,在子组件发送索引,所以我可以使用它到href。但在子,我不能使用索引,所以我可以遍历组件并为每个组件使用href,我想将此组件用于不同的数据。blitz. users和group组件。其中一个有变量名,另一个有用户名。
https://stackblitz.com/edit/angular-3vp4xw-a9jeot?file=src/app/chips-autocomplete-example.ts

gg0vcinb

gg0vcinb1#

它可能更容易完成,例如(Typescript):
自定义组件mat-chip-link模板

<mat-chip (click)="this.clickEventHandler($event)">
  <ng-content>
  </ng-content>
</mat-chip>

字符串

组件

@Component({
  selector: 'app-mat-chip-link',
  template: './mat-chip-link.component.html',
  styleUrls: ['./mat-chip-link.component.scss']
})
export class MatChipLink{
  private _href: string | null = null;

  @Input('href') public set href(value: string | null) {
    this._href = value;
  }

  public clickEventHandler(e: MouseEvent) {
    if(this._href !== null) {
      window.open(this._href, '_blank');
    } else {
      console.log('Href is null.');
    }
  }
}

用法

<app-mat-chip-link [href]="https://www.stackoverflow.com">
  <img src='../../assets/image.png'/>Jump to StackOverflow 🙌🏼
</app-mat-chip-link>

lf5gs5x2

lf5gs5x22#

像这样的东西怎么样:
你可以创建一个类似'mat-chip-link'的组件:

<mat-chip *ngFor="let fruit of fruits" (removed)="remove(fruit)">

  <ng-content select="[.beforeLink]"></ng-content>

  <a
    [href]="link"
    class="mat-standard-chip"
    target="_blank"
    style="margin: 0; padding: 0"
    >My link</a
  >
  
  <ng-content select="[.afterLink]"></ng-content>
</mat-chip>

字符串
(我不确定ng-content选择器,请查看这里的文档以获取更多信息。https://angular.io/guide/content-projection)。
然后从父组件中调用这个组件

<mat-chip-link *ngFor="let fruit of fruits" (removed)="remove(fruit)" [link]="test"> 
  <mat-icon matChipRemove class="beforeLink" *ngIf="editable">cancel</mat-icon>
  <mat-icon matChipRemove class="afterLink" *ngIf="removable">cancel</mat-icon>
</mat-chip>

相关问题