Olá,
Estou seguindo passo-a-passo do vídeo, mas não estou conseguindo ter o mesmo efeito de desativar o alert, conforme o vídeo. Já revisei o código várias vezes, testei a expressão regular no regextester, rodei novamente o comando npm start
, mas ainda continua aparecendo. Se eu coloco o <script>alert('oi')</script>
na MensagemView, o alert não aparece, mas quando coloco no NegociacoesView.ts o alert aparece.
O que pode ser? Observação: o controller não apresente nenhum problema de compilação
Segue meu código: NegociacoesView.ts
import { View } from './View'
import { Negociacoes } from '../models/Negociacoes'
export class NegociacoesView extends View<Negociacoes> {
template(model: Negociacoes): string {
return `
<table class="table table-hover table-bordered">
<thead>
<tr>
<th>DATA</th>
<th>QUANTIDADE</th>
<th>VALOR</th>
<th>VOLUME</th>
</tr>
</thead>
<tbody>
${model.paraArray().map(negociacao => `
<tr>
<td>${negociacao.data.getDate()}/${negociacao.data.getMonth() + 1}/${negociacao.data.getFullYear()}</td>
<td>${negociacao.quantity}</td>
<td>${negociacao.value}</td>
<td>${negociacao.volume}</td>
</tr>
`).join('')}
</tbody>
<tfoot>
</tfoot>
</table>
<script>alert('oi')</script>
`;
}
}
View.ts
export abstract class View<T> {
private _element: JQuery;
private _escape: boolean;
constructor(selector: string, escape?: boolean) {
this._element = $(selector);
this._escape = escape;
}
update(model: T) {
let template = this.template(model);
/**
* Avoid malicious code - when adding script tag on your template
*/
if (this._escape)
template = template.replace(/<script>[\s\S]*?<\/script>/g, '');
this._element.html(this.template(model));
}
abstract template(model: T): string
}