I'm currently developing a web app using Angular 7. I wanted to include ngx-toastr to send notifications to users but it isn't working as expected. When I trigger a toast nothing happens, except for a box in the size of a toast is appearing in bottom right corner but only when hovered over by the coursor. Following an example of how I trigger the toastr function. Test is invoked by the click of a button.
import {ToastrService} from 'ngx-toastr';
@Component({
selector: 'app-action-controls',
templateUrl: './action-controls.component.html',
styleUrls: ['./action-controls.component.scss']
})
export class Notification implements OnInit {
test(){
this.toast.success("I'm a toast!", "Success!");
}
constructor(private toast: ToastrService) { }
}
I includet the library css files in the angular.json file in my project like this:
...
"styles": [
"src/styles.scss",
"node_modules/bootstrap/scss/bootstrap.scss",
"node_modules/ngx-toastr/toastr.css"
],
...
And like this in my app.module.ts file:
...
import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
import {ToastrModule} from 'ngx-toastr';
...
imports: [
...
BrowserAnimationsModule,
ToastrModule.forRoot({
timeOut: 1000,
positionClass: 'toast-bottom-right'
})
]
...
I can't figure out what i'm doing wrong, has anyone had similar experiences? Many thanks in advance!
I was able to make a minimal reproduction of your issue, and I don't see any problems: https://stackblitz.com/edit/angular-avcidu
Is it possible that you have some custom styles that conflict with the toastr.css styles, or a template that is malformed (an unclosed div, for example)?
Are you using the latest version of ngx-toastr? (9.1.1 at the time of this post)
What does your template look like?
The previous stackblitz now shows the replicated problem. Here is the link again: https://stackblitz.com/edit/angular-avcidu
Looks like both bootstrap and ngx-toastr use the .toastr class, affecting the opacity property on the toastr div.
This thread has a workable answer: Setting toastr opacity?
The answer therein is to force the opacity to 1. Add this your custom stylesheet:
#toast-container > div {
opacity:1;
}
And here's the working stackblitz: https://stackblitz.com/edit/angular-gjazzq
When reading through this thread, I guess you could fix your problem. However, I would leave the solution to my problem here unless someone might have the same as us.
What I have done to fix the problem is: to add @import '~ngx-toastr/toastr.css';
into style.css
under the root directory of the project will get rid of the issue.
Even after adding the opacity css code from the above answers in my global style.scss, it did not solve my problem entirely; I was getting a blank white box.
After adding the additional css mentioned in this GitHub post, the toasts are working correctly.
The relevant code from the above post is below:
/* TOASTR BUGFIX */
#toast-container > div {
opacity: 1;
}
.toast {
font-size: initial !important;
border: initial !important;
backdrop-filter: blur(0) !important;
}
.toast-success {
background-color: #51A351 !important;
}
.toast-error {
background-color: #BD362F !important;
}
.toast-info {
background-color: #2F96B4 !important;
}
.toast-warning {
background-color: #F89406 !important;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With