2017-08-02 34 views
0

我正在开发与角4的Web应用程序,我有一个与我的参数在URL中的问题。可以导航到路由而不显示url中的参数?

我有5个字段,其中一个是base64图像,但是当我在URL中调用我的组件显示所有参数时,是否可能不显示这些?因为当我点击浏览器写入url时非常缓慢,因为有一个base64代码。

+4

如果你不希望数据在URL中显示,不把它作为路由参数。使用共享服务或使用解析器。 –

+0

localstorage也可能有所帮助,具体取决于您的应用程序。 (cookies或会话变量) – F3L1X79

+0

您应该阅读Victor Savkin的博客文章,了解角度应用程序中的状态管理(https://blog.nrwl.io/using-ngrx-4-to-manage-state-in-angular-applications-64e7a1f84b7b ),因为如果你没有在url中设置你的图像的base64,它不会被深度链接持久化,所以你必须采取你的参数,并找到一个基于我认为这篇博文的解决方案。 – Supamiu

回答

0

在它是绝对简单的,你可以使用具有公共价值的服务:

@Injectable() 
export class Base64Share { 
    image: string 
} 

(虽然在很多情况下,Subject能流变化的组件,值变化的最好)

然后,您可以设置图像父:

constructor(private imageShare: Base64Share) { 
    this.name = `Angular! v${VERSION.full}` 
} 

setImage() { 
    this.imageShare.image = 'iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=='; 
} 

,并得到它的孩子:

ngOnInit() { 
    this.image = "data:image/png;base64, " + this.imageShare.image; 
} 

子模板

<img [src]="image | safeUrl"/> 

Live plunker example

+0

我对您的解决方案有疑问,为什么要添加一个Pipe?谢谢,这可能是我的解决方案! – fm433403

+0

仅仅因为我认为它比在组件中使用DomSanitizer更简单 - 个人偏好 – 0mpurdy

+0

是不是在我所有的实现中,我没有使用过任何你说的,请给我解释一下? – fm433403

相关问题