Поиск…


параметры

Params подробности
селектор имя тега вы ссылаетесь на свой компонент в html
шаблон (templateUrl) строка, которая представляет html, который будет вставлен везде, где находится <selector> . templateUrl - это путь к html-файлу с таким же поведением
трубы массив труб, которые используются этим компонентом.

замечания

СУПЕР ВАЖНО!

ОТКЛЮЧЕНИЕ САНИТИЗАЦИИ ОСТАВЛЯЕТ ВАС ПРИ РИСКЕ XSS (межсайтовый скриптинг) И ДРУГИХ ВЕКТОРОВ ATTACK. ПОЖАЛУЙСТА, УБЕДИТЕСЬ, ЧТО ТЫ ХОТИТЕ, ЧТО ВЫ ПОЛУЧАЕТЕ 100%

Использование Pipes позволяет вам изменять только значения атрибутов:

<tag [attribute]="expression or variable reference | pipeName">

вы не можете использовать трубы таким образом:

<tag attribute="expression or variable reference | pipeName">

или таким образом

<tag attribute={{expression or variable reference | pipeName}}

Обход Sanitizing с помощью труб (для повторного использования кода)

Проект в соответствии со структурой из направляющей Angular2 Quickstart здесь .

RootOfProject
|
+-- app
|   |-- app.component.ts
|   |-- main.ts
|   |-- pipeUser.component.ts
|   \-- sanitize.pipe.ts
|
|-- index.html
|-- main.html
|-- pipe.html

main.ts

import { bootstrap } from '@angular/platform-browser-dynamic';
import { AppComponent } from './app.component';

bootstrap(AppComponent);

Он находит файл index.html в корне проекта и строит его.

app.component.ts

import { Component } from '@angular/core';
import { PipeUserComponent } from './pipeUser.component';

@Component({
    selector: 'main-app',
    templateUrl: 'main.html',
    directives: [PipeUserComponent]
})

export class AppComponent { }

Это компонент верхнего уровня, который группирует другие компоненты, которые используются.

pipeUser.component.ts

import { Component } from '@angular/core';
import { IgnoreSanitize } from "./sanitize.pipe";

@Component({
    selector: 'pipe-example',
    templateUrl: "pipe.html",
    pipes: [IgnoreSanitize]
})

export class PipeUserComponent{
    constructor () { }        
    unsafeValue: string = "unsafe/picUrl?id=";
    docNum: string;

    getUrl(input: string): any {
        if(input !== undefined) {
            return this.unsafeValue.concat(input);
            // returns : "unsafe/picUrl?id=input"
        } else {
            return "fallback/to/something";
        }
    }
}

Этот компонент обеспечивает представление для работы трубки.

sanitize.pipe.ts

import { Pipe, PipeTransform } from '@angular/core';
import { DomSanitizationService } from '@angular/platform-browser';

@Pipe({
    name: 'sanitaryPipe'
})
export class IgnoreSanitize implements PipeTransform {

   constructor(private sanitizer: DomSanitizationService){}

   transform(input: string) : any {
       return this.sanitizer.bypassSecurityTrustUrl(input);
   }

}

Это логика, которая описывает, что форматы трубы.

index.html

<head>
    Stuff goes here...
</head>
<body>
    <main-app> 
        main.html will load inside here.
    </main-app>
</body>

main.html

<othertags> 
</othertags>

<pipe-example>  
    pipe.html will load inside here.
</pipe-example>

<moretags>
</moretags>

pipe.html

<img [src]="getUrl('1234') | sanitaryPipe">
<embed [src]="getUrl() | sanitaryPipe">

Если вы хотите проверить html во время работы приложения, вы увидите, что он выглядит так:

<head>
    Stuff goes here...
</head>

<body>

    <othertags> 
    </othertags>
    
    <img [src]="getUrl('1234') | sanitaryPipe">
    <embed [src]="getUrl() | sanitaryPipe">
    
    <moretags>
    </moretags>

</body>


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow