在字符串变量中插入锚标记
Insert anchor tag in string variable
我正在尝试在字符串变量中插入锚标记。该字符串将在屏幕上显示为 link,但它似乎忽略了锚标记,只包含标记内的值。
例如某些东西变成 'something'
private generateAnchors(content: string) {
let contentToReturn = content;
if (content.indexOf('@') < 0) return contentToReturn;
else if (content.indexOf('@') > -1) {
let tag = content.substring(content.indexOf('@'), content.indexOf(' ', content.indexOf('@')));
let address = tag.substring(1, tag.length);
let anchor = '<a href="/home/user/"'+address+'>'+tag+'</a>';
console.log('found substr: '+tag, ' '+address+' '+anchor);
contentToReturn.replace(tag, anchor);
console.log('final string: '+contentToReturn);
}
return contentToReturn;
}
这在 Angular/TypeScript 中是如何完成的?
您是否尝试替换:
contentToReturn.replace(tag, anchor);
与:
contentToReturn = contentToReturn.replace(tag, anchor);
String.replace
不会更改您的字符串,因为它是不可变的,它只是 returns 完成替换的新字符串。
Angular Templating
除了这个小问题,您还应该考虑使用 Angular 的模板机制。你应该阅读文档来了解这一点,但我会尽量给你一个适合你特定情况的例子。
您将有一个 links.component.html 文件包含:
<a href="/home/user/{{address}}">{{tag}}</a>
如果您需要其中的几个,也可能是一个循环:
<div *ngFor="let link in links">
<a href="/home/user/{{link.address}}">{{link.tag}}</a>
</div>
和对应的links.component.ts与对应的元素:
import { Component } from "@angular/core";
@Component({
selector?: "app-links-component"
templateUrl: "links.component.html"
})
export class LinksComponent {
address: string;
tag: string;
constructor() {}
// ts logic to fill address/tag information
}
或者第二种情况下的数组:
import { Component } from "@angular/core";
@Component({
selector?: "app-links-component"
templateUrl: "links.component.html"
})
export class LinksComponent {
links: Link[] = [];
constructor() {}
generateAnchors(address: string, tag: string) {
// You can bind this method to a form submit or something.
this.links.push(new Link(address, tag));
}
}
N.B.: 因为都是手写的,可能会有错别字...
我正在尝试在字符串变量中插入锚标记。该字符串将在屏幕上显示为 link,但它似乎忽略了锚标记,只包含标记内的值。 例如某些东西变成 'something'
private generateAnchors(content: string) {
let contentToReturn = content;
if (content.indexOf('@') < 0) return contentToReturn;
else if (content.indexOf('@') > -1) {
let tag = content.substring(content.indexOf('@'), content.indexOf(' ', content.indexOf('@')));
let address = tag.substring(1, tag.length);
let anchor = '<a href="/home/user/"'+address+'>'+tag+'</a>';
console.log('found substr: '+tag, ' '+address+' '+anchor);
contentToReturn.replace(tag, anchor);
console.log('final string: '+contentToReturn);
}
return contentToReturn;
}
这在 Angular/TypeScript 中是如何完成的?
您是否尝试替换:
contentToReturn.replace(tag, anchor);
与:
contentToReturn = contentToReturn.replace(tag, anchor);
String.replace
不会更改您的字符串,因为它是不可变的,它只是 returns 完成替换的新字符串。
Angular Templating
除了这个小问题,您还应该考虑使用 Angular 的模板机制。你应该阅读文档来了解这一点,但我会尽量给你一个适合你特定情况的例子。
您将有一个 links.component.html 文件包含:
<a href="/home/user/{{address}}">{{tag}}</a>
如果您需要其中的几个,也可能是一个循环:
<div *ngFor="let link in links">
<a href="/home/user/{{link.address}}">{{link.tag}}</a>
</div>
和对应的links.component.ts与对应的元素:
import { Component } from "@angular/core";
@Component({
selector?: "app-links-component"
templateUrl: "links.component.html"
})
export class LinksComponent {
address: string;
tag: string;
constructor() {}
// ts logic to fill address/tag information
}
或者第二种情况下的数组:
import { Component } from "@angular/core";
@Component({
selector?: "app-links-component"
templateUrl: "links.component.html"
})
export class LinksComponent {
links: Link[] = [];
constructor() {}
generateAnchors(address: string, tag: string) {
// You can bind this method to a form submit or something.
this.links.push(new Link(address, tag));
}
}
N.B.: 因为都是手写的,可能会有错别字...