Я реализую iFrame в своем угловом приложении. Когда я даю URL-адрес src прямо в html, приложение работает нормально и загружает запрошенный пользовательский интерфейс. Но когда я получаю URL-адрес src из бэкэнда и передаю его в качестве переменной auth Guard, он перенаправляет URL-адрес на страницу входа. Как это исправить?
DefectsManagementComponent.html:
<div class = "container-fluid dtep-style dtep-min-height-569px-minus-56px">
<div class = "row">
<div class = "col-lg-12 col-md-12 col-sm-12 col-xs-12">
<div class = "form-group"></div>
</div>
</div>
<div class = "row">
<div class = "col-lg-12 col-md-12 col-sm-12 col-xs-12">
<div class = "form-group">
<iframe id = "defects" class = "col-lg-12 col-md-12 col-sm-12 col-xs-12" title = "Defects Management" src = "url">
</iframe>
</div>
</div>
</div>
</div>
DefectsManagementComponent.ts:
export class DefectsManagementComponent implements OnInit {
url: string;
constructor(private service: SolutionInstanceService) {
}
ngOnInit() {
this.service.fetchSolutionByName("DEFECT_MANAGEMENT").subscribe(data =>{
this.url = data["solutionURL"];
});
}
}
AppRoutingModule.ts:
const routes: Routes = [
{
path: "login",
component: LoginComponent
},
{
path: "home",
canActivate: [AuthGuardGuard],
component: HomeComponent
},
{
path: "defects",
component: DefectsManagementComponent
},
{
path: "",
redirectTo: "login",
pathMatch: "full"
},
{
path: "**",
redirectTo: "login",
pathMatch: "full"
}
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule
Я пробовал, но результат тот же.
попробуйте URL-адрес ведения журнала консоли после того, как он был установлен, чтобы убедиться, что это правильное значение. Если это ответ http-вызова, вам может потребоваться вызвать для него result.
Я зарегистрировал его, значение извлекается, но когда я проверяю, он показывает значение src как null в исходном коде.
В большинстве случаев он пытается получить доступ к «http: localhost: 4200 / url». Когда я даю src = «url», он обращается к «http: localhost: 4200 / url» и когда я меняю его на [src] = "url", значение url равно нулю.
Src = «url» - это просто присвоение, а [src] привязывает значение url к этому свойству. Еще одна вещь, которую стоит попробовать, - это сделать ngIf в iframe, чтобы он отображался только тогда, когда установлен url.
Я дал нгиф. он ждал, пока не появилось значение, но снова попытался получить доступ к «http: localhost: 4200 / url» и был перенаправлен на вход.
В этом последнем тесте вы использовали квадратные скобки для src, верно? Это должно быть полученное вами значение или null.
Когда я использую [src] вместе с ngIf, он выдает ошибку «небезопасное значение, используемое в контексте URL ресурса»
См. Этот stackoverflow.com/a/38269951/10632970, вам нужно сначала очистить URL-адрес
Добавление дезинфицирующего средства сработало. Спасибо!!
Добавил его как ответ, чтобы его можно было принять :) @YerramsettyGDSuryaPrakash





Вы должны использовать квадратные скобки вокруг src, чтобы привязать к нему значение url, в противном случае вы назначаете строку «url» для src. Также используйте ngIf в iframe, чтобы показывать его только при заполнении url. Затем вам нужно очистить URL-адрес. См. Больше на https://stackoverflow.com/a/38269951/10632970.
вы можете попробовать с src в квадратных скобках? ([src] = "url")